我正在尝试创建计算机视觉程序的exe,但是遇到权限错误。
通过anaconda提示符命令(以管理员身份运行):
pyinstaller -F --name "Computer Vision" --add-data "model.xml;_model2_.hdf5" C:\Users\me\PycharmProjects\project\project_CV.spec
当exe成功构建并运行时,在引用我的model.xml和model2.hdf5文件时出现以下错误。在我的python代码中,根据pyinstaller文档,文件被引用到相对路径,如下所示:
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
但是,当我运行exe时,找到了文件,但是由于权限错误而无法访问它们:
OSError: Unable to open file, errno = 13, error message = permission denied
我在运行python 3.6和pyinstaller 3.4的Windows设备上,我已经咨询了有关此主题的其他堆栈溢出问题,但似乎无济于事。
答案 0 :(得分:0)
add-data
语法如下:
--add-data "<path to file or files>;<path on target>"
。因此,如果要添加多个具有不同名称的文件,则需要单独提供它们。
所以您问题的正确格式是:
pyinstaller -F --name "Computer Vision" --add-data "model.xml;." --add-data "_model2_.hdf5;." <your_script_name>.py
另外,请记住,当您使用*.spec
时,任何参数都将被忽略,因此您需要手动编辑spec文件或在脚本上使用参数。