当我的 Python 应用程序被 PyInstaller 卡住时尝试导入 Geopandas,它停止工作。
这是源代码:
print("Hello, StackOverflow")
import geopandas as gpd
这是编译后的 EXE 的控制台输出结果:
Hello, StackOverflow
Traceback (most recent call last):
File "application.py", line 3, in <module>
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "d:\documents\projecttwo\publish\harv_venv1\env\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\geopandas\__init__.py", line 9, in <module>
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "d:\documents\projecttwo\publish\harv_venv1\env\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\geopandas\datasets\__init__.py", line 7, in <module>
StopIteration
[6764] Failed to execute script application
当我尝试导入 Geopandas 是更复杂的应用程序时,这种行为是一致的,并且控制台输出是恒定的。
Geopandas 已正确安装在 Python 3.6.3 虚拟环境中(通过 PIP,我也尝试过 0.4 和 0.3 版)并且在编译之前运行良好(即
python application.py
成功运行)。我尝试从不同来源(例如 Gohlke 的轮子)安装 geopandas 和 pyinstaller,结果相同。我还尝试从头开始创建一个全新的虚拟环境,从 Gohlke 安装 Fiona,从 pip 安装 geopandas。
我怀疑可能需要进行一些隐藏的导入。我对 PyInstaller 相当陌生,所以任何帮助将不胜感激。
最佳答案
我收到了同样的错误,并以与上面的 aorr 不同的方式解决了它。
该错误是因为 pyinstaller 找不到包中包含的 geopandas 数据集,因为它们是 .shp 文件。
我没有在我的项目中使用 geopandas 数据集,所以我没有手动将它们包含在我的 .spec 文件中,而是注释掉了 import geopandas.datasets
声明来自:File "site-packages\geopandas\__init__.py", line 9, in <module>
.
这正确编译并为我的程序提供了预期的输出。
关于python - 无法使用 PyInstaller 可执行文件导入 Geopandas - 尽管在虚拟环境中运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51662773/