eds*_*lp1 5 pyinstaller python-2.7
我正在尝试使用pyinstaller做一个独立的应用程序。可执行文件的构建很好,但是当我尝试使用库pyproj中集成的功能执行某些操作时,可执行文件崩溃。
该脚本可以在Pycharm上正常运行,所以我认为问题在于pyinstaller没有与pyproj的某种库链接。
我是否可以对spec文件做一些特殊的事情,或者在用pyinstaller构建的独立应用程序上进行其他指定pyproj的事情?
这是我获得的错误:
Traceback (most recent call last): File "<string>", line 6, in
<module> File "C:\pyproj\build\main\out00-PYZ.pyz\pyproj", line 343,
in __new__ File "_proj.pyx", line 85, in _proj.Proj.__cinit__
(_proj.c:1190)
RuntimeError: no system list, errno: 2
Run Code Online (Sandbox Code Playgroud)
这是我的“ main.py”
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pyproj
print pyproj.__version__
p=pyproj.Proj(init='EPSG:4326')
Run Code Online (Sandbox Code Playgroud)
提前致谢
问题是,当将 pyproj 与 PyInstaller 一起使用时,pyproj 无法找到库文件夹中的数据文件。
解决方案是创建一个挂钩文件,该文件将指定数据文件的位置,以便您可以将它们与我们的可执行文件链接。
hook-pyproj.py
from PyInstaller.hooks.hookutils import collect_data_files
datas = collect_data_files('pyproj')
Run Code Online (Sandbox Code Playgroud)
挂钩文件可以位于 Pyinstaller 安装的“hooks”文件夹中,或者使用命令 --additional-hooks-dir,指定“hook-pyproj.py”所在的文件夹