163 信息:UPX 不可用。selenium pyinstaller 一个文件.exe

Max*_*uez 2 selenium pyinstaller selenium-chromedriver

我已经阅读了几乎所有与此主题相关的帖子,但我无法\xc2\xb4t 找到解决方案!!!。\n我的文件夹路径是:C:\\Users\\User\\Desktop\\Data Analytics Arg \\py_inst

\n

在我创建了一个虚拟环境的文件夹中,我添加了 chromedriver.exe 和我的脚本,如图所示:

\n

在此输入图像描述

\n

这是我的脚本:

\n
from selenium import webdriver\nfrom selenium.webdriver.chrome.options import Options\nfrom selenium.webdriver.common.action_chains import ActionChains\nfrom selenium.webdriver.support.ui import WebDriverWait\nfrom selenium.webdriver.support import  expected_conditions as EC\nfrom selenium.webdriver.common.by  import By\nimport time\n\ndef resource_path(relative_path):\n\ntry:\n    import sys\n    import os\n    # PyInstaller creates a temp folder and stores path in _MEIPASS\n    base_path = sys._MEIPASS\nexcept Exception:\n    base_path = os.path.abspath(".")\n\nreturn os.path.join(base_path, relative_path)\n\ntry :\n\nurl = "https://pinterest.com"\ndriver_path = "chromedriver.exe"\n\n#Instanciamos la clase de Options para definir ciertas opciones:\noptions = Options()\noptions.add_argument("--lang=es") #lenguaje que queremos utilizar\n#options.add_argument("--headless") # utilizar un navegador sin cabeza\noptions.add_argument("--log-level=3")# omite los warnings en la consola\n\n#definimos ntro.webdriver:\n\ndriver = webdriver.Chrome(executable_path=driver_path, options=options)\ndriver.get(url)\n\ntime.sleep(2)\n\nbuttons = driver.find_elements_by_css_selector("button[data-test-id=\'page-scroll-arrow\']")\nfor button in buttons:\n    opacity = button.get_attribute("style").split(";")[0][-1]\n    if opacity is \'1\':\n        button.click()\n    \ntime.sleep(3)\n\ntexto = driver.find_element_by_css_selector(\'h2.unauth-homepage-signup-title\').text\nwith open(\'result.txt\',\'w\') as file:\n    file.write(texto)\n\ndriver.close()\n\nexcept Exception as e: \n    print(e)\n
Run Code Online (Sandbox Code Playgroud)\n

我添加到service.py文件(C:\\ Users \\ User \\ Desktop \\ Data Analytics Arg \\ py_inst \\ venv \\ Lib \\ site-packages \\ selenium \\ webdriver \\ common \\ service.py) :creationflags= CREATE_NO_WINDOW 并从 subprocess 导入 CREATE_NO_ WINDOW ,如下所示:

\n
from subprocess import CREATE_NO_WINDOW, DEVNULL\n\nimport errno\nimport os\nimport subprocess\nfrom platform import system\nfrom subprocess import PIPE, CREATE_NO_WINDOW\nfrom time import sleep\nfrom selenium.common.exceptions import WebDriverException\nfrom selenium.webdriver.common import utils\n
Run Code Online (Sandbox Code Playgroud)\n

和 :

\n
self.process = subprocess.Popen(cmd, env=self.env,\n                                        close_fds=system() != \'Windows\',\n                                        stdout=self.log_file,\n                                        stderr=self.log_file,\n                                        stdin=PIPE,\n                                        creationflags=self.creationflags,\n                                        creationflags=CREATE_NO_WINDOW)\n
Run Code Online (Sandbox Code Playgroud)\n

全部来自这个帖子:

\n

隐藏_chrome_answer

\n

最后,通过终端我尝试创建一个 .exe 文件:

\n
pyinstaller --add-data "chromedriver.exe;." --windowed --onefile prueba_1.py\n
Run Code Online (Sandbox Code Playgroud)\n

但我收到了这个错误:

\n

124 信息:PyInstaller:4.7\n124 信息:Python:3.10.0\n147 信息:平台:Windows-10-10.0.19042-SP0\n149 信息:写入 C:\\Users\\User\\Desktop\\Data Analytics Arg\\py_inst\\prueba_1.spec\n153 信息:UPX 不可用。\n脚本 \'C:\\Users\\User\\Desktop\\Data Analytics Arg\\py_inst\\prueba_1.py\' 未找到

\n

现在我的文件夹是这样的:

\n

在此输入图像描述

\n

如果我运行脚本,在 service.py 发生更改后,我收到以下消息:

\n
c:\\Users\\User\\Desktop\\Data Analytics Arg\\py_inst\\prueba_script.py:41: SyntaxWarning: \n"is" with a literal. Did you mean "=="?\n  if opacity is \'1\':\nTraceback (most recent call last):\n  File "c:\\Users\\User\\Desktop\\Data Analytics Arg\\py_inst\\prueba_script.py", line 1, in \n<module>\n from selenium import webdriver\n  File "C:\\Users\\User\\Desktop\\Data Analytics Arg\\py_inst\\venv\\lib\\site- \n  packages\\selenium\\webdriver\\__init__.py", line 18, in <module>\n    from .firefox.webdriver import WebDriver as Firefox  # noqa\n  File "C:\\Users\\User\\Desktop\\Data Analytics Arg\\py_inst\\venv\\lib\\site- \n  packages\\selenium\\webdriver\\firefox\\webdriver.py", line 31, in <module>\n    from .service import DEFAULT_EXECUTABLE_PATH, Service\n  File "C:\\Users\\User\\Desktop\\Data Analytics Arg\\py_inst\\venv\\lib\\site- \n  packages\\selenium\\webdriver\\firefox\\service.py", line 20, in <module>\n    from selenium.webdriver.common import (service, utils)\n  File "C:\\Users\\User\\Desktop\\Data Analytics Arg\\py_inst\\venv\\lib\\site- \n  packages\\selenium\\webdriver\\common\\service.py", line 77\n    creationflags=CREATE_NO_WINDOW)\n    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n
Run Code Online (Sandbox Code Playgroud)\n

有人可以帮我吗???

\n

Deb*_*anB 5

这个错误信息...

UPX is not available
Run Code Online (Sandbox Code Playgroud)

...意味着 pyinstaller 找不到upx.exe加密 exe 文件。


解决方案

为了修复此错误,您需要根据您的系统配置下载upx 。如果是 64 位 操作系统,您需要下载:

upx-for-windows-10.png

如果您已下载upx并保存在D:\您需要执行的操作:

pyinstaller main.py --key 123456 -n test -F -w --upx-dir D:\
Run Code Online (Sandbox Code Playgroud)