Ruamel yaml 导入不起作用
Ruamel yaml import does not work
我想在我的项目中使用 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
我查看了 PyDev 5.8.0 的源代码(LiClipse 似乎是闭源的,但我假设处理所有 Python 相关内容的 pydev 东西是开源的)。
在那里,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 import
和 Unused import
的来源,看看是否有其他类似的功能,但无法直接找到任何东西。由于 导入将起作用,即使此消息显示 ,但看起来 LiClipse 也使用其他一些(不兼容的)方式来查找导入。
ruamel.yaml
是一个基于命名空间的包(即有 200 多个以 ruamel.
开头的其他包,其中一些也在 PyPI 上),这可能会导致问题。这也是为什么你必须使用 pip
来安装的原因。
我已经通过电子邮件向 Fabio Zadrozny(作者)发送了关于此问题的问题报告,并提供我的帮助以帮助调查此问题。
我想在我的项目中使用 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
我查看了 PyDev 5.8.0 的源代码(LiClipse 似乎是闭源的,但我假设处理所有 Python 相关内容的 pydev 东西是开源的)。
在那里,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 import
和 Unused import
的来源,看看是否有其他类似的功能,但无法直接找到任何东西。由于 导入将起作用,即使此消息显示 ,但看起来 LiClipse 也使用其他一些(不兼容的)方式来查找导入。
ruamel.yaml
是一个基于命名空间的包(即有 200 多个以 ruamel.
开头的其他包,其中一些也在 PyPI 上),这可能会导致问题。这也是为什么你必须使用 pip
来安装的原因。
我已经通过电子邮件向 Fabio Zadrozny(作者)发送了关于此问题的问题报告,并提供我的帮助以帮助调查此问题。