我正在尝试使用pyinstaller打包PyQt应用程序。我简单的目录树如下所示:
maindir/
├── build/
├── dev_tool.py
├── dev_tool.spec
├── dist
│ └── dev_tool/
└── ...
当我从dev_tool
文件夹
dist/
时
$ ./dist/dev_tool/dev_tool
我收到无法找到.../dev_tool/langdetect/utils/messages.properties
的错误。但是,当我手动添加langdetect
文件夹(我只是在pip install langdetect
之后从我的python site-packages中复制了它)之后就可以了。现在我读到了如何通过在.spec
- 文件here中定义文件来添加文件,但是,如果我尝试将langdetect/
文件夹从我的Python站点包复制到{ {1}}这样的文件夹,它仍然不起作用。
我在dist/dev_tool/
文件
dev_tool.spec
这不应该复制从site-packages langdetect文件夹到a = Analysis (...
datas=[('path_to.../site-packages/langdetect', 'dist/dev_tool/langdetect')]
...)
的所有内容吗?
非常感谢任何帮助。
答案 0 :(得分:0)
您可以使用PyInstaller中的Tree
课程。
# dev_tool.spec
langdetect_toc = Tree('C:\\[site-packages]\\langdetect',
prefix='langdetect',
excludes=['*.py','*.pyc', '*test*'])
a.datas += langdetect_toc
然后以pyinstaller
作为参数运行dev_tool.spec
会将langdetect
中的所有必要数据文件放入dist\dev_tool\langdetect
,以便dev_tool
可以在运行时找到它们。
答案 1 :(得分:0)
这对我有用:
a = Analysis(
# your other stuff here...
datas=[
('langdetect/utils', 'csg_fileutil_libs/langdetect/utils'), # for messages.properties file
('langdetect/profiles', 'csg_fileutil_libs/langdetect/profiles'),
]
# the rest of your analysis spec...
)