gpt4 book ai didi

python-3.x - PyInstaller 不包含依赖文件

转载 作者:行者123 更新时间:2023-12-03 23:32:30 25 4
gpt4 key购买 nike

我正在尝试在我的 project 中创建一个 use PyInstaller .

这个项目使用了 weasyprint,但是当我运行 pyinstaller 时,它失败了,因为 weasyprint 的资源文件似乎没有被安装。

Traceback (most recent call last):
File "<string>", line 20, in <module>
File "<frozen importlib._bootstrap>", line 2214, in _find_and_load
File "<frozen importlib._bootstrap>", line 2203, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
File "/usr/local/lib/python3.4/dist-packages/PyInstaller-3.0dev_be553f0-py3.4.egg/PyInstaller/loader/pyi_importers.py", line 302, in load_module
exec(bytecode, module.__dict__)
File "/usr/local/lib/python3.4/dist-packages/mdedit-1.0.1-py3.4.egg/mdedit/editor/mdeditor.py", line 13, in <module>
from mdedit.generator import *
File "<frozen importlib._bootstrap>", line 2214, in _find_and_load
File "<frozen importlib._bootstrap>", line 2203, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
File "/usr/local/lib/python3.4/dist-packages/PyInstaller-3.0dev_be553f0-py3.4.egg/PyInstaller/loader/pyi_importers.py", line 302, in load_module
exec(bytecode, module.__dict__)
File "/usr/local/lib/python3.4/dist-packages/mdedit-1.0.1-py3.4.egg/mdedit/generator.py", line 13, in <module>
from weasyprint import HTML, CSS
File "<frozen importlib._bootstrap>", line 2214, in _find_and_load
File "<frozen importlib._bootstrap>", line 2203, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
File "/usr/local/lib/python3.4/dist-packages/PyInstaller-3.0dev_be553f0-py3.4.egg/PyInstaller/loader/pyi_importers.py", line 302, in load_module
exec(bytecode, module.__dict__)
File "/usr/local/lib/python3.4/dist-packages/weasyprint/__init__.py", line 337, in <module>
from .html import find_base_url, HTML5_UA_STYLESHEET, get_html_metadata
File "<frozen importlib._bootstrap>", line 2214, in _find_and_load
File "<frozen importlib._bootstrap>", line 2203, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
File "/usr/local/lib/python3.4/dist-packages/PyInstaller-3.0dev_be553f0-py3.4.egg/PyInstaller/loader/pyi_importers.py", line 302, in load_module
exec(bytecode, module.__dict__)
File "/usr/local/lib/python3.4/dist-packages/weasyprint/html.py", line 37, in <module>
filename=os.path.join(os.path.dirname(__file__), 'css', 'html5_ua.css'))
File "/usr/local/lib/python3.4/dist-packages/weasyprint/__init__.py", line 223, in __init__
with result as (source_type, source, base_url, protocol_encoding):
File "/usr/lib/python3.4/contextlib.py", line 59, in __enter__
return next(self.gen)
File "/usr/local/lib/python3.4/dist-packages/weasyprint/__init__.py", line 294, in _select_source
with open(filename, 'rb') as file_obj:
FileNotFoundError: [Errno 2] No such file or directory: '/home/sylvain/git/md-edit/dist/MdEditor/weasyprint/css/html5_ua.css'

有没有办法强制 pyinstaller 包含这个文件?

我应该自己包含它吗?

命令:pyinstaller mainwindow.spec

主窗口规范:

# -*- mode: python -*-
a = Analysis(['mdedit/mainwindow.py'],
pathex=['/home/sylvain/git/md-edit'],
hiddenimports=[],
hookspath=None,
runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='mainwindow',
debug=False,
strip=None,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=None,
upx=True,
name='MdEditor')

提前致谢。

最佳答案

我遇到过类似的问题,可能是同一个问题,并按如下方式解决。希望它对你有用:

# -*- mode: python -*-

from PyInstaller.utils.hooks import collect_data_files

w = collect_data_files('weasyprint')
ww = []
for k,v in w:
ww.append((k, v.split('weasyprint/')[1]))
added_files += ww
added_files += collect_data_files('pyphen')
extra_imports = ['pyphen', 'weasyprint']

a = Analysis(['mdedit/mainwindow.py'],
pathex=['/home/sylvain/git/md-edit'],
datas=added_files,
hiddenimports=extra_imports,
hiddenimports=[],
hookspath=None,
runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='mainwindow',
debug=False,
strip=None,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=None,
upx=True,
name='MdEditor')

关于python-3.x - PyInstaller 不包含依赖文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29026827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com