【问题标题】:Pyinstaller cannot import geopandasPyinstaller 无法导入 geopandas
【发布时间】:2021-08-11 07:23:17
【问题描述】:

我正在尝试从使用 pyinstaller 创建的可执行文件中使用 geopandas 库。但它会引发有关缺少 dll 文件的错误。我可以在作为 python 文件执行时运行脚本,但不能作为可执行文件运行。

这是我正在使用的脚本(名为 sample.py):

import geopandas as gpd
print("Hello world")

这是我遇到的错误:

(venv) C:\Users\Windows 10\Desktop\py2exe\dist\sample>sample.exe
Traceback (most recent call last):
  File "sample.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\pyimod03_importers.py", line 546, 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\pyimod03_importers.py", line 546, in exec_module 
  File "geopandas\_config.py", line 126, in <module>
  File "geopandas\_config.py", line 112, 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\pyimod03_importers.py", line 546, in exec_module 
  File "geopandas\_compat.py", line 202, 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\pyimod03_importers.py", line 546, in exec_module 
  File "rtree\__init__.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\pyimod03_importers.py", line 546, in exec_module 
  File "rtree\index.py", line 6, 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\pyimod03_importers.py", line 546, in exec_module 
  File "rtree\core.py", line 75, in <module>
  File "rtree\finder.py", line 67, in load
OSError: could not find or load spatialindex_c.dll
[8276] Failed to execute script 'sample' due to unhandled exception!        

我执行了pyinstaller sample.py 来创建可执行文件。

这是 pyinstaller 日志的 pastebin 链接:https://pastebin.com/pjyYbVB8

【问题讨论】:

  • 如果你能找到spatialindex_c.dll,也许在geopandas包的安装位置,你可以尝试手动把它放到dist/文件夹中。

标签: python pyinstaller geopandas


【解决方案1】:

您可以在 pyinstaller 命令中添加--collect-binaries rtree,如果
您正在使用pyinstaller 4.3 或更高版本。

spatial*.dlls 位于 rtree 包内:

|   core.py
|   exceptions.py
|   finder.py
|   index.py
|   __init__.py
|
\---lib
        spatialindex-64.dll
        spatialindex_c-64.dll

PyInstaller 将收集 dll 并将它们放入 dist/ 文件夹中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2021-04-11
    • 2020-10-30
    • 2021-04-04
    相关资源
    最近更新 更多