PyInstaller 和 NSIS Zip2Exe - 引用 PC 外部的文件

PyInstaller & NSIS Zip2Exe - Referencing files outside of your PC

我创建了一个引用多个 shapefile 的应用程序。示例如下:

df = gpd.GeoDataFrame.from_file(r'C:\PATH_ON_OWN_PC\FILE_NAME.shp')

从上面可以看出,程序引用了我自己电脑上的文件。

然后我使用 NSIS 创建了一个 setup.exe 文件,以便可以下载该程序并在其他 PC 上使用。我在 zip 文件中包含了所有数据集。

问题是当应用程序运行脚本时它仍然引用我自己 PC 上的路径,这显然是行不通的。

有没有办法更改代码,以便它从可下载的 .exe 文件中读取文件,这样无论从哪个 PC 下载文件,它都会读取文件。

谢谢!

您应该能够使用类似这样的东西,以便您的 .exe 可以在其他计算机上运行。这是一个通用示例,它指向我的脚本目录中的一个文件,我的 python.exe 所在的位置,用于我的一个 Conda envs。您可以替换 os.path.join() 中的第二个和第三个参数以匹配您的 shapefile 的路径。

import os
import sys

python_exe_dir = os.path.dirname(sys.executable)
sample_file_path = os.path.join(python_exe_dir, 'Scripts', 'gdal2tiles.py')
print(sample_file_path)

'C:\Users\matth\anaconda3\envs\gpd_0\Scripts\gdal2tiles.py'

所以在你的情况下,你最终会得到这样的结果。

df = gpd.GeoDataFrame.from_file(sample_file_path)