执行 pyinstaller 分布式可执行文件时未找到模块
使用了hiddenimport,它被导入但仍然不起作用
pyinstaller 命令:-
pyinstaller --hiddenimport flask --hiddenimport fake_useragent -F --add-data "templates;templates" main.py
运行 dist/main.exe 后的输出:-
Traceback (most recent call last):
File "fake_useragent\utils.py", line 142, in load
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\mdreh\\AppData\\Local\\Temp\\_MEI193242\\fake_useragent\\data\\browsers.json'
Unable to find local data/json file or could not parse the contents using importlib-resources. Try pkg-resource next.
Traceback (most recent call last):
File "fake_useragent\utils.py", line 128, in load
File "importlib\resources\_common.py", line 22, in files
File "importlib\resources\_common.py", line 53, in get_package
File "importlib\resources\_common.py", line 44, in resolve
File "importlib\__init__.py", line 126, in import_module
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'fake_useragent.data'
Could not find local data/json file or could not parse the contents using pkg-resource. Fallback to external resource.
Traceback (most recent call last):
File "fake_useragent\utils.py", line 128, in load
File "importlib\resources\_common.py", line 22, in files
File "importlib\resources\_common.py", line 53, in get_package
File "importlib\resources\_common.py", line 44, in resolve
File "importlib\__init__.py", line 126, in import_module
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'fake_useragent.data'
不知道为什么找不到模块
data
因为当我运行正常的.py
文件时它工作正常
而且
12631 INFO: Analyzing hidden import 'fake_useragent'
也没有给出任何错误。
也许
fake_useragent
需要额外的文件,如果是这样,请帮助我
基本上,pyinstaller无法检测到
Fake_UserAgent
使用的文件,这些文件是缓存文件,所以修复它的一种方法是禁用那些保存的缓存文件
import fake_useragent
useragent = fake_useragent.UserAgent(use_external_data=True)
通过传递
True
,我们命令useragent模块使用未保存在我们本地计算机中的外部数据
更多信息可以在这里找到
重新安装 python 后,我的 pyinstaller 开始抱怨 fake-useragent。
这对我有用。 创建 pyinstaller 时添加以下内容:
--collect-datas=fake_useragent
因此,在我的示例中,当我使用 cmd 创建 exe 时: pyinstaller --collect-data freezedict --collect-datas=fake_useragent --onefile -w my_project.py
用户代理也不能以 .exe 格式工作。