我使用的是 Windows 10 工作计算机,安装了 Python 3,但未安装 Python 2。此处保持脚本简单。这个:
import pyogrio
print(pyogrio.__version__)
作为 file.py 脚本运行得非常好。当我编译(使用 pyinstaller)并运行它时,出现以下错误:
Traceback (most recent call last):
File "Simple.py", line 1, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "pyogrio\__init__.py", line 21, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "pyogrio\core.py", line 21, in <module>
File "pyogrio\\_io.pyx", line 1, in init pyogrio._io
ModuleNotFoundError: No module named 'pyogrio._geometry'
查看 pyogrio 的站点包文件夹,没有
\_geometry
,但有 \_geometry.pyx
和 \_geometry.pyd
。
我对 \_io
也有类似的问题,但我可以在他们的 \_envy.py
中看到,当导入失败时,它会查找 gdal*.dll。最初它也找不到这个,但我能够强制它并使其工作。
在任何可见代码中都没有导入或使用 \_geometry
这就是我现在不知所措的原因。
它用什么来代替\_geometry
?我需要向编译器添加什么来添加缺少的内容?
我把事情搞得太复杂了。在使用 Visual Studio Code 时,pylance(检查模块的内部人员?)说没有 pyogrio._geometry。但一旦编译完成,导入就可以正常工作了。将其添加到 pyinstaller 的 --hidden-imports 中效果很好。