Ruamel yaml导入不起作用

时间:2017-07-21 11:22:17

标签: python python-import ruamel.yaml liclipse

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

1 个答案:

答案 0 :(得分:1)

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