【问题标题】:Pyinstaller Unable to Convert FullyPyinstaller 无法完全转换
【发布时间】:2021-09-11 13:48:43
【问题描述】:

规格

  • Python 版本 3.9.6(DL 并从 Python 的网站安装,不是 Microsoft Store 等)
  • Windows 10

问题

我尝试使用 pyinstaller filename.pypyinstaller --onefile Simple.py 将 python 文件打包到 *.exe 中,这似乎不起作用:

73 信息:PyInstaller:4.3 73 信息:Python:3.9.5 125 信息:平台: Windows-10-10.0.19043-SP0 126 信息:写 C:\Users\Baven\Desktop\Forexe\Simple.spec 186 信息:UPX 可用。 188 信息:使用路径扩展 PYTHONPATH ['C:\Users\Baven\Desktop\Forexe', 'C:\Users\Baven\Desktop\Forexe'] 197 信息:检查分析 197 信息:构建分析,因为 Analysis-00.toc 不存在 197 信息:初始化模块依赖关系图... 200 信息:缓存模块 图挂钩... 215 信息:分析 base_library.zip ... 2561 信息: 处理预查找模块路径钩子 distutils 来自 'C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\hooks\pre_find_module_path\hook-distutils.py'。 2561 信息:distutils:重定向到非 venv dir 'C:\Program 文件\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib' 4598 信息:缓存模块依赖关系图... 4789 信息:正在运行 分析 Analysis-00.toc Traceback(最近一次调用最后一次):文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\win32ctypes\pywin32\pywintypes.py", 第 35 行,在 pywin32error 中 产生文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\win32ctypes\pywin32\win32api.py”, 第 43 行,在 LoadLibraryEx 中 返回 _dll._LoadLibraryEx(fileName, 0, flags) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\win32ctypes\core\ctypes_util .py", 第 42 行,在 check_null 中 raise make_error(function, function_name) OSError: [WinError 1920] 系统无法访问该文件。

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件“C:\Program 文件\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py", 第 197 行,在 run_module_as_main return run_code(code, main_globals, None, File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py", 第 87 行,在 run_code 中 exec(code, run_globals) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\Scripts\pyinstaller.exe_main.py", 第 7 行,在文件中 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller_main.py", 第 114 行,运行中 run_build(pyi_config, spec_file, **vars(args)) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller_main.py", 第 65 行,在 run_build PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\ PyInstaller\building\build_main.py", 第 737 行,主要 构建(规范文件,kw.get('distpath'),kw.get('工作路径'),kw.get('clean_build'))文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\building\build_main.py", 第 684 行,正在构建中 exec(code, spec_namespace) 文件“C:\Users\Baven\Desktop\Forexe\Simple.spec”,第 7 行,在 a = 分析(['Simple.py'],文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\building\ build_main.py", 第 242 行,在 init 中 self.postinit() 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\building\数据结构.py", 第 160 行,在 postinit 中 self.assemble() 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\building\build_main.py”, 第 391 行,在汇编中 self.binaries.extend(bindepend.Dependencies([('', python, '')], 文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\depend\bindepend.py", 第 224 行,在依赖项中 对于 ftocnm, fn 在 getAssemblyFiles(pth, manifest, redirects): 文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\depend\bindepend.py", 第 403 行,在 getAssemblyFiles 中 在 getAssemblies(pth) 中组装:文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\depend\bindepend.py” , 第 354 行,在 getAssemblies 中 res = GetManifestResources(pth) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\utils\win32\winmanifest.py” , 第 1016 行,在 GetManifestResources 中 返回 winresource.GetResources(文件名,[RT_MANIFEST],名称,语言)文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\utils\win32\winresource.py", 第 170 行,在 GetResources 中 hsrc = win32api.LoadLibraryEx(文件名, 0, LOAD_LIBRARY_AS_DATAFILE) 文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\win32ctypes\pywin32\win32api.py", 第 43 行,在 LoadLibraryEx 中 返回 _dll._LoadLibraryEx(fileName, 0, flags) 文件 "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\contextlib.py", 第 135 行,在 退出 self.gen.throw(类型、值、回溯)文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\win32ctypes\pywin32\ pywintypes.py", 第 37 行,在 pywin32error 中 引发错误(exception.winerror,exception.function,exception.strerror)win32ctypes.pywin32.pywintypes.error:(1920, 'LoadLibraryExW', '系统无法访问该文件。')

C:\Users\Baven\Desktop\Forexe>pyinstaller --onefile Simple.py 72 信息: PyInstaller:4.3 72 信息:Python:3.9.5 122 信息:平台: Windows-10-10.0.19043-SP0 123 信息:写 C:\Users\Baven\Desktop\Forexe\Simple.spec 166 信息:UPX 可用。 168 信息:使用路径扩展 PYTHONPATH ['C:\Users\Baven\Desktop\Forexe', 'C:\Users\Baven\Desktop\Forexe'] 177 信息:检查分析 177 信息:构建分析,因为 Analysis-00.toc 不存在 178 INFO:初始化模块依赖图... 181 INFO:缓存模块 图挂钩... 196 信息:分析 base_library.zip ... 2579 信息: 处理预查找模块路径钩子 distutils 来自 'C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\hooks\pre_find_module_path\hook-distutils.py'。 2580 信息:distutils:重定向到非 venv dir 'C:\Program 文件\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib' 4596 信息:缓存模块依赖关系图... 4777 信息:正在运行 分析 Analysis-00.toc Traceback(最近一次调用最后一次):文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\win32ctypes\pywin32\pywintypes.py", 第 35 行,在 pywin32error 中 产生文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\win32ctypes\pywin32\win32api.py”, 第 43 行,在 LoadLibraryEx 中 返回 _dll._LoadLibraryEx(fileName, 0, flags) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\win32ctypes\core\ctypes_util .py", 第 42 行,在 check_null 中 raise make_error(function, function_name) OSError: [WinError 1920] 系统无法访问该文件。

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件“C:\Program 文件\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py", 第 197 行,在 run_module_as_main return run_code(code, main_globals, None, File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py", 第 87 行,在 run_code 中 exec(code, run_globals) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\Scripts\pyinstaller.exe_main.py", 第 7 行,在文件中 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller_main.py", 第 114 行,运行中 run_build(pyi_config, spec_file, **vars(args)) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller_main.py", 第 65 行,在 run_build PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\ PyInstaller\building\build_main.py", 第 737 行,主要 构建(规范文件,kw.get('distpath'),kw.get('工作路径'),kw.get('clean_build'))文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\building\build_main.py", 第 684 行,正在构建中 exec(code, spec_namespace) 文件“C:\Users\Baven\Desktop\Forexe\Simple.spec”,第 7 行,在 a = 分析(['Simple.py'],文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\building\ build_main.py", 第 242 行,在 init 中 self.postinit() 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\building\数据结构.py", 第 160 行,在 postinit 中 self.assemble() 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\building\build_main.py”, 第 391 行,在汇编中 self.binaries.extend(bindepend.Dependencies([('', python, '')], 文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\depend\bindepend.py", 第 224 行,在依赖项中 对于 ftocnm, fn 在 getAssemblyFiles(pth, manifest, redirects): 文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\depend\bindepend.py", 第 403 行,在 getAssemblyFiles 中 在 getAssemblies(pth) 中组装:文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\depend\bindepend.py” , 第 354 行,在 getAssemblies 中 res = GetManifestResources(pth) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\utils\win32\winmanifest.py” , 第 1016 行,在 GetManifestResources 中 返回 winresource.GetResources(文件名,[RT_MANIFEST],名称,语言)文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\PyInstaller\utils\win32\winresource.py", 第 170 行,在 GetResources 中 hsrc = win32api.LoadLibraryEx(文件名, 0, LOAD_LIBRARY_AS_DATAFILE) 文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\win32ctypes\pywin32\win32api.py", 第 43 行,在 LoadLibraryEx 中 返回 _dll._LoadLibraryEx(fileName, 0, flags) 文件 "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\contextlib.py", 第 135 行,在 退出 self.gen.throw(类型、值、回溯)文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\win32ctypes\pywin32\ pywintypes.py", 第 37 行,在 pywin32error 中 引发错误(exception.winerror,exception.function,exception.strerror)win32ctypes.pywin32.pywintypes.error:(1920, 'LoadLibraryExW', '系统无法访问该文件。')

我也做了什么并重试打包,所有这些都导致了上面的结果(除了UPX)

  • 重新安装
  • 重新启动(也更新了 Windows)
  • 在虚拟环境中尝试转换
  • 修复了 UPX(186 INFO:UPX 可用。)通过下载 upx.exe 并将其放置在 *.py 文件夹中
  • 在应用执行别名中禁用(关闭)两个(python 和 python3)应用安装程序

我觉得奇怪

  • cmd中显示的Python版本还是3.9.5; IDLE 中也是 3.9.5,重启电脑后变为 3.9.6
  • 其他 Python 用户可以毫无问题地进行转换
  • WindowsApps 文件夹访问没有返回(例如返回 _run_code(code, main_globals, None, File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py",)李>

手动访问 WindowApps 文件夹时,提示“您当前无权访问此文件夹”。显示。如果这是根本原因,无论如何允许Python访问它?

这是 python 文件的链接以及转换后的内容:https://drive.google.com/file/d/1L8vVEc4z6LYxgN6XHWwJlujVsicMgfMy/view


我还尝试将以下代码作为 *.py 文件:

#!/usr/bin/python

import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";

结果如下:

Traceback(最近一次调用最后一次):文件 "C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\mysql\connector\network.py", 第 574 行,在 open_connection 中 self.sock.connect(sockaddr) ConnectionRefusedError: [WinError 10061] 由于目标机器主动,无法建立连接 拒绝了

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件“C:\Program 文件\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py", 第 197 行,在 _run_module_as_main 返回_run_code(代码,main_globals,无,文件“C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py”, 第 87 行,在 run_code 中 exec(code, run_globals) 文件 "c:\Users\Baven.vscode\extensions\ms-python.python-2021.6.944021595\pythonFiles\lib\python\debugpy_main.py ", 第 45 行,在 cli.main() 文件 "c:\Users\Baven.vscode\extensions\ms-python.python-2021.6.944021595\pythonFiles\lib\python\debugpy/..\debugpy\server\cli.py", 第 444 行,主要 运行()文件“c:\Users\Baven.vscode\extensions\ms-python.python-2021.6.944021595\pythonFiles\lib\python\debugpy/..\debugpy\server\cli.py”, 第 285 行,在 run_file 中 runpy.run_path(target_as_str, run_name=compat.force_str("ma​​in")) 文件 "C:\Program 文件\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py", 第 268 行,在 run_path return _run_module_code(code, init_globals, run_name, File "C:\Program 文件\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py", 第 97 行,在 _run_module_code _run_code(代码,mod_globals,init_globals,文件“C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.1520.0_x64__qbz5n2kfra8p0\lib\runpy.py”, 第 87 行,在 run_code 中 exec(code, run_globals) 文件“c:\Users\Baven\Desktop\demo_mysql_test.py”,第 3 行,在 mydb = mysql.connector.connect(文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\mysql\connector_init.py", 第 273 行,连接中 返回 MySQLConnection(*args, **kwargs) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\mysql\connector\connection. py", 第 107 行,在 init 中 self.connect(**kwargs) 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\mysql\connector\abstracts.py” , 第 1003 行,连接中 self._open_connection() 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\mysql\connector\connection.py”, 第 350 行,在 _open_connection
self._socket.open_connection() 文件“C:\Users\Baven\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\mysql\connector\network.py”, 第 576 行,在 open_connection
引发errors.InterfaceError(mysql.connector.errors.InterfaceError:2003:无法连接到MySQL 'localhost:3306' 上的服务器(10061 无法建立连接,因为 目标机器主动拒绝)

它们(pyinstallerSQL)似乎与一个根本原因有关。

【问题讨论】:

    标签: python python-3.x pyinstaller exe


    【解决方案1】:

    这解决了问题:

    python3 -m pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
    

    【讨论】:

      猜你喜欢
      • 2016-07-17
      • 2021-04-19
      • 2021-08-12
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多