gpt4 book ai didi

python - Ruamel yaml 导入不起作用

转载 作者:行者123 更新时间:2023-12-01 02:46:18 27 4
gpt4 key购买 nike

我想在我的项目中使用 Ruamel YAML,我使用代理,所以我下载了

来自https://pypi.python.org/pypi/ruamel.yaml的gzip包并安装它
pip install ruamel.yaml-0.15.19.tar.gz .

我在 Windows 10 上使用 LiClipse,并且在项目资源管理器中的 lib/site-packages/ruamel 下看到了 ruamel 包,但我无法导入和使用它。

无法解析导入。

其他框架(如 paho MQTT 或 pySerial)运行没有问题。

pip list --format-columns的输出

Package     Version
----------- -------
paho-mqtt 1.1
pip 9.0.1
pyserial 3.3
ruamel.yaml 0.15.19
setuptools 28.8.0

enter image description here

最佳答案

我已经查看了 PyDev 5.8.0 的源代码(LiClipse 似乎是闭源的,但 pydev 的东西(我认为它可以处理所有与 Python 相关的东西)是开源的)。

其中,pydevd.py 中有模块 get_fullname(),并且可以正确找到 ruamel.yaml(如果已安装):

Python 3.6.2 (default, Jul 17 2017, 14:33:45) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkgutil
>>> loader = pkgutil.get_loader('ruamel.yaml')
>>> def get_fullname(self, mod_name):
... if IS_PY3K:
... import pkgutil
... else:
... from _pydev_imps import _pydev_pkgutil_old as pkgutil
... try:
... loader = pkgutil.get_loader(mod_name)
... except:
... return None
... if loader is not None:
... for attr in ("get_filename", "_get_filename"):
... meth = getattr(loader, attr, None)
... if meth is not None:
... return meth(mod_name)
... return None
...
>>> IS_PY3K=True
>>> get_fullname(None, 'ruamel.yaml')
'/home/venv/tmp-d2e4bd3600c863b7/lib/python3.6/site-packages/ruamel/yaml/__init__.py'

(由于 self 未被引用,因此可能应该删除并装饰 @staticmethod)。

我搜索了Unresolved importUnused import的来源,看看是否还有其他类似的功能,但无法直接找到任何东西。由于即使显示此消息,导入也会起作用,但看起来 LiClipse 确实还使用其他某种(不兼容的)方式来查找导入。

ruamel.yaml 是一个基于命名空间的包(即有 200 多个以 ruamel. 开头的其他包,其中一些也在 PyPI 上),并且这个可能会导致问题。这也是为什么你必须使用 pip 来安装的原因。

我已通过电子邮件向 Fabio Zadrozny(作者)发送了有关此问题的问题报告,并表示愿意帮助调查此问题。

关于python - Ruamel yaml 导入不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45236380/

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