当前位置: 首页 > 面试题库 >

pyinstaller一个文件--no-console不起作用“致命错误”

左丘边浩
2023-03-14
问题内容

我尝试使用pyinstaller的2个选项,一个带控制台,一个不带控制台。

我正在使用Windows 10,Python 3.5.4,Windows Chrome驱动程序2.33和Selnium 3.6.0和Pyinstaller
3.3。

在一个 没有 控制台失败:

这是 Test.py 的代码 __

#!python3
from selenium import webdriver

# Chrome Proxy options and disable the Yellow Bar about Chrome being controlled by Automated Software.
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--disable-infobars")
chrome_options.add_argument("--disable-logging")
chrome_options.add_argument("--disable-notifications")
chrome_options.add_argument("--disable-default-apps")
chrome_options.add_argument("--disable-extensions")


# load google.com with the proxy settings and a logging path to a file
driver = webdriver.Chrome(r"D:\Selenium\chromedriver_win32\chromedriver.exe", chrome_options=chrome_options)

# maximise window
driver.maximize_window()

driver.get("https://www.google.com/mail")

这是具有完全相同代码的pyinstaller命令:

-使用控制台窗口也可以工作:

pyinstaller -F -i favicon.ico Test.py

-没有控制台窗口失败

pyinstaller -F --noconsole -i favicon.ico Test.py

我收到此错误:

*"Failed to execute script error"*

我不知道为什么。

谢谢

感谢您的回复,我查看了:

C:\Users\testuser\AppData\Local\Programs\Python\Python35\Lib\site-packages\selenium\webdriver\chrome\service.py

这里没有子流程。

我还检查了:

C:\Users\testuer\AppData\Local\Programs\Python\Python35\Lib\site-packages\selenium\webdriver\common\service.py

在第70行,我在stdin = self.log_file条目中添加了该条目,因为它丢失了

 try:
            cmd = [self.path]
            cmd.extend(self.command_line_args())
            self.process = subprocess.Popen(cmd, env=self.env,
                                            close_fds=platform.system() != 'Windows',
                                            stdin=self.log_file, stdout=self.log_file, stderr=self.log_file)

用pyinstaller重新创建:

pyinstaller -F --noconsole  -i favicon.ico Test.py

这创建了exe,但是现在控制台窗口出现了。

带有selenium(webdriver)的Python程序不能作为单个和noconsoleexe文件工作(pyinstaller)


问题答案:

经过一番搜索,我找到了完整的解决方案:首先转到-

C:\Python35\Lib\site-packages\selenium\webdriver\common\service.py

变更:

self.process = subprocess.Popen(cmd, env=self.env,
                                            close_fds=platform.system() != 'Windows',
                                            stdout=self.log_file, stderr=self.log_file)

至:

self.process = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False, creationflags=0x08000000)

现在只需像这样构建您的app.py:

pyinstaller --noconsole --onefile  --noupx   Yourfile.py


 类似资料:
  • 问题内容: 我可以通过崇高的文本在我的PC上运行python(python 3.7)程序。该程序使用tkinter和sqlite3。pyinstaller不支持它们吗? 运行它时出现的错误(只需双击在中创建的文件: 如果有人对此有任何经验,将不胜感激! 如果问题可能出在代码本身中,我可以发布代码。 问题答案: 您正在使用。据我测试,类似的模块似乎在此版本中不起作用。尝试卸载python(不要忘了之

  • 我目前正试图将静音功能编程到discord机器人上。它已启用服务器权限“静音成员”。 这是每当我调用mute命令时运行的代码: 因此,此代码的连续调用应该切换为静音,但message.channel.send.每次都会发送false,表明该成员从未静音。我不清楚静音功能是如何与不和谐一起工作的。我在某处读到它是基于角色的——如果是这样,那么setMute()命令的意义是什么? 文档:https:/

  • 我开发了一个工具,使用JSch(一个java库,用于通过ssh与其他机器通信)一次性向不同的linux机器发送一行命令 因此,我们的客户需要更改所有机器上的密码。谷歌帮助我达到了这一点: 其中“123”是新密码。 命令将执行,但这始终是输出: 这表明命令没有成功。 请注意,这是一个运行linux的小型设备。这是一个私人编译的版本,尽可能紧凑。其实我对linux了解不多! 这是机器信息: 密码帮助:

  • 因此我正在尝试使用emScripten编译以下代码: 我的实际代码要大得多,但我在这里缩短了它,以强调我的主要疑虑(我留下了我正在使用的所有头文件)。这段代码使用g++进行了完美的编译,并给出了所有预期的输出。 但当我使用将其编译为web程序集时,它给出了以下错误: 为什么EMCC没有找到这个文件?在C++中是否有处理unordered_maps的替代方法? 我在使用tr1时遇到了堆栈溢出问题中的

  • 我已经编辑了这个问题,现在正是我所做的: 我想从命令行中的一些. class文件创建一个. jar文件。 我在Eclipse上工作,创造了: myProject项目,在它:myPackage包中,在它的:myClass类中。然后我在命令行中写道: 我得到了这个: 这真的创造了myJar。jar文件。现在,我想检查这个过程是否成功完成,所以我从jar中提取了这个类: 我得到了这个: 这只为我创建了M

  • 我只是在Windows中安装jdk和jre版本8。环境变量已设置。我尝试在cmd中运行“java-version”,它显示了安装的java版本。但是当我尝试用“javac projectname”编译java项目时,系统说javac不能被识别为内部命令或外部命令。有谁能告诉我怎么修好它吗? 下面是我的环境变量: C:\users\foody>echo%路径%C:\ProgramData\Oracl