【问题标题】:PyInstaller failing to build exe -- cannot find pyproj.libsPyInstaller 无法构建 exe——找不到 pyproj.libs
【发布时间】:2022-12-22 05:46:50
【问题描述】:

这是回溯:

Traceback (most recent call last):
File "main.py", line 5, in <module>
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
File "geopandas\__init__.py", line 1, in <module>
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
File "geopandas\_config.py", line 109, in <module>
File "geopandas\_config.py", line 95, in _default_use_pygeos
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
File "geopandas\_compat.py", line 9, in <module>
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
File "pyproj\__init__.py", line 48, in <module>
File "pyproj\__init__.py", line 39, in _delvewheel_init_patch_0_0_25
File "os.py", line 1111, in add_dll_directory
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:\\Users\\carrier\\AppData\\Local\\Temp\\_MEI547922\\pyproj.libs'

我试过将“pyproj.libs”添加到hiddenimports,但这并没有改变任何东西。不知道该怎么办...

【问题讨论】:

    标签: python pyinstaller geopandas


    【解决方案1】:

    pyproj lib 目录添加到您的数据文件。

    例如,在您的规范文件中:

    a = Analysis(
        ['myscript.py'],
        pathex=[],
        binaries=...,
        datas=[('...\Lib\site-packages\pyproj.libs','pyproj.libs')],
        hiddenimports=['pyproj', ...],
        hookspath=[],
        hooksconfig={},
        runtime_hooks=[],
        excludes=['...'],
        win_no_prefer_redirects=False,
        win_private_assemblies=False,
        cipher=block_cipher,
        noarchive=False,
    )
    

    【讨论】:

    • 谢谢,就是这样!我确实需要将“pygeos”更改为“pyproj”,如果您更新您的答案,我会将其标记为已回答!
    • 看错了,缺少的库是pygeos。
    【解决方案2】:

    发生这种情况的原因是捆绑工具(pyinstaller、cxfreeze、py2exe)不知道pyproj.libs,因为它们只要包含动态库(例如 .dll 文件):

        Directory: C:UserssleetAppDataLocalpypoetryCacheirtualenvs	est-gdal-onnx-Opor2TD1-py3.10l 
        ibsite-packagespyproj.libs
    
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----        21/12/2022     20:53         619008 jpeg62-aa49b59e4c79b6d936d2f4c4d602b0f9.dll
    -a----        21/12/2022     20:53         490496 libcurl-8975b871c76e7d9dda757cb5463c30f7.dll
    -a----        21/12/2022     20:53         154624 liblzma-096abc6d29f3f6caa4ceeaf8481938c5.dll
    -a----        21/12/2022     20:53         571312 msvcp140.dll
    -a----        21/12/2022     20:53        3219968 proj-3feae4f6e6867e7b1da97fbd32eea041.dll
    -a----        21/12/2022     20:53        1011200 sqlite3-ee83b4671ee10b0a425b4a0e38e79fe2.dll
    -a----        21/12/2022     20:53         452096 tiff-959777470b686230774eb18d1b97235f.dll
    -a----        21/12/2022     20:53          89088 zlib1-23ce3850b4e2a3bd64a2634349c2685d.dll
    

    PeaceLeka's answer 适用于 PyInstaller。对于 cxfreeze,使用:

    pyproj_path = "C:\Users\sleet\AppData\Local\pypoetry\Cache\virtualenvs\test-gdal-onnx-Opor2TD1-py3.10\lib\site-packages\pyproj.libs"
    
    build_options = {
        "include_files": [pyproj_path]
    }
    
    executables = [cx_Freeze.Executable(script = "main.py", base = "Win32GUI")]
    cx_Freeze.setup(
        name= "Test pyproj",
        options = dict(build_exe=build_options),
        version = "0.1",
        description = "Test pyproj",
        executables = executables,
        # include_msvcr = True
    )
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 2016-06-24
      • 2022-01-08
      • 2014-01-19
      • 2019-03-20
      • 2023-01-26
      相关资源
      最近更新 更多