1

我想在我的项目中使用 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

在此处输入图像描述

4

1 回答 1

2

我查看了 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(作者)发送了一份关于此问题的问题报告,并提供了我的帮助以帮助调查此问题。

于 2017-07-21T16:28:13.467 回答