我有程序执行期间需要加载的数据文件。我使用以下函数来访问我的数据文件: -
def resource_path(relativePath):
try:
# PyInstaller stores data files in a tmp folder refered to as _MEIPASS
basePath = sys._MEIPASS
except Exception:
try:
if os.path.exists(os.path.join(os.path.dirname(__file__)), relativePath):
basePath = os.path.join(os.path.dirname(__file__), "multibootusb")
elif os.path.exists(os.path.join(sys.prefix, "multibootusb"), relativePath):
print os.path.join(sys.prefix, "multibootusb")
except Exception:
basePath = '.'
path = os.path.join(basePath, relativePath)
if not os.path.exists(path):
return None
return path
从IDE运行并使用pyinstaller分发为可执行文件后,这非常正常。但是,使用setup.py安装我的应用程序时存在问题。这是我用于分发数据文件usinf setup.py的示例代码: -
data_files = [("/usr/share/applications",["data/multibootusb.desktop"]),
('/usr/share/pixmaps',["data/multibootusb.png"]),
(os.path.join(sys.prefix,"multibootusb", "tools"),["tools/checking.gif"])])
我不得不使用sys.prefix
,因为各种发行版的路径不同。