我正在使用 PyInstaller 从 python 脚本生成可执行文件。这就是我所做的:
sudo python2 -m PyInstaller ptemplatized.spec
它成功构建了.exe,但是当我执行它时,出现以下错误:
[19878] LOADER: Running pyi_rth_mpldata.py
[19878] LOADER: Running pyi_rth_multiprocessing.py
[19878] LOADER: Running pyi_rth__tkinter.py
[19878] LOADER: Running pyi_rth_pkgres.py
[19878] LOADER: Running physiocap_templatized.py
Traceback (most recent call last):
File "/home/abderrahmen/Bureau/PC/pour/physiocap_templatized.py", line 38, in <module>
import geopandas
File "/tmp/pip-build-2qvLhV/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 395, in load_module
File "/usr/local/lib/python2.7/dist-packages/geopandas/__init__.py", line 5, in <module>
from geopandas.io.file import read_file
File "/tmp/pip-build-2qvLhV/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 395, in load_module
File "/usr/local/lib/python2.7/dist-packages/geopandas/io/file.py", line 4, in <module>
import fiona
File "/tmp/pip-build-2qvLhV/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 395, in load_module
File "/home/hadoop/.local/lib/python2.7/site-packages/fiona/__init__.py", line 83, in <module>
from fiona.collection import BytesCollection, Collection
File "/tmp/pip-build-2qvLhV/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 395, in load_module
File "/home/hadoop/.local/lib/python2.7/site-packages/fiona/collection.py", line 9, in <module>
from fiona.ogrext import Iterator, ItemsIterator, KeysIterator
File "/tmp/pip-build-2qvLhV/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 684, in load_module
File "fiona/ogrext.pyx", line 1, in init fiona.ogrext
ImportError: No module named _shim
[19878] Failed to execute script ptemplatized
我尝试寻找该模块,但它似乎不存在。谢谢你。
编辑:
所以我在另一个网站上得到了这个答案:
Fiona 在其设置脚本中具有扩展模块和一些相当复杂的逻辑,以根据 GDAL 库的不同版本来管理它们。这就是为什么 python setup.py build(如另一个问题中所报告的)不起作用的原因,您必须执行 python setup.py build_ext build。我认为您需要为 pyinstaller 找到一种方法来运行 fiona 的 setup.py 中定义的 build_ext 命令,然后一切就绪。
谁能告诉我在我的情况下如何做到这一点?
编辑2:
我通过使用 tuto 安装一个古老的 gdal 版本来计算这个错误。现在,当我在另一台机器上执行它时,我Pyinstaller
创建了.exe
没有错误的 bur,我得到了同样的错误。使用的目标不就是无需安装所有模块PyInstaller
即可执行文件吗?如果运行良好并创建了正确.exe
的,为什么我会遇到导入错误?谢谢PyInstaller
.exe