我需要从我的Python 3应用程序创建可执行文件。因为我需要在Linux(Ubuntu)和Windows上进行操作,所以我决定使用PyInstaller(它允许创建单个可执行文件,支持多个平台并且适用于Python 3)。该应用程序使用GDAL来翻译和变形图像。当我激活conda环境运行时,它就可以正常工作。
这是我用pyi-makespec
生成的spec文件:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['../../src/app.py'],
pathex=['var/pyinstaller/'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='app',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )
这里是一直抛出的错误:
ERROR 1: PROJ: proj_create_from_database: Open of /home/cisu/anaconda3/envs/env_name/share/proj failed
ERROR 1: Translating source or target SRS failed:
EPSG:5678
ERROR 1: PROJ: proj_create_from_wkt: Open of /home/cisu/anaconda3/envs/env_name/share/proj failed
ERROR 1: PROJ: pj_obj_create: Open of /home/cisu/anaconda3/envs/env_name/share/proj failed
Traceback (most recent call last):
File "src/app.py", line 235, in <module>
File "src/app.py", line 204, in process
File "src/app.py", line 165, in _warp
File "site-packages/osgeo/gdal.py", line 625, in Warp
File "site-packages/osgeo/gdal.py", line 3410, in wrapper_GDALWarpDestName
TypeError: in method 'wrapper_GDALWarpDestName', argument 4 of type 'GDALWarpAppOptions *'
[17879] Failed to execute script app
这是针对
--onedir
配置的,对于 --onefile
配置,它表现完全相同。GDAL没有被安装在我的系统中,但已经安装在我用于构建二进制文件的conda环境中。有人知道我做错了什么吗?编辑:
我在新的Ubuntu安装中启动了二进制文件,得到了以下结果:
ERROR 1: PROJ: proj_create_from_database: Cannot find proj.db
ERROR 1: Translating source or target SRS failed:
EPSG:5678
由于某种原因,错误信息不同,但仍然无法工作。
...=/home/ubuntu/anaconda3/envs/myEnv/share/proj
,而不必将其复制到您的工作目录中。 - Binx