我无法使用PyInstaller打包ruamel.yaml。
我使用了以下简单的测试用例:
from ruamel.yaml import YAML
parser = YAML(typ="safe", pure=True)
print(parser.load("17"))这在正常运行时运行良好,但在与PyInstaller打包后会产生此异常:
ImportError: cannot import name 'YAML' from 'ruamel.yaml' (/tmp/_MEIsScRyt/ruamel/yaml/__init__.pyc)我可以通过将YAML称为ruamel.yaml.main.YAML来部分解决这个问题,但是在库中通过ruamel.yaml引用各种属性,我不能更改这些属性。
如何确保PyInstaller正确打包整个ruamel.yaml包?
我使用的是通过pip3、4.2.dev0安装的最新PyInstaller版本。
发布于 2020-11-25 14:45:04
如果你可以参考ruamel.yaml.main.YAML,但不能参考ruamel.yaml.YAML,那么看起来pyinstaller并没有正确地安装ruamel.yaml的__init__.py:
from ruamel.yaml.main import *您应该检查该文件在子目录ruamel/yaml下是否可用。
通常,您应该将PyInstaller生成/存储的文件层次结构与`ruamel.yaml 应如何安装、as specified in the documentation的结果进行比较
pip install ruamel.yaml所有ruamel.*和ruamel.*.*包的setup.py中都有一些更正,可以正确安装这些嵌套的命名空间包。但是,这只针对pip进行了调整和测试。与pip不是100%兼容的安装程序可能会做出无效的假设,从而无法正确安装。
https://stackoverflow.com/questions/64996585
复制相似问题