我无法导入pkg_resources。每当我尝试它时显示
Python 3.5.2 (default, Jun 28 2016, 08:46:01)
[GCC 6.1.1 20160602] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg_resources
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 47, in <module>
from pkg_resources.extern.six.moves import urllib, map, filter
ImportError: No module named 'pkg_resources.extern.six.moves'; 'pkg_resources.extern.six' is not a package
from pkg_resources
是否指/usr/lib/python3.5/site-packages/pkg_resources/extern
(其中没有六个包)。你能指出我做错了吗?
我正在使用Arch Linux,Python 3.5.2
答案 0 :(得分:2)
那么,那里没有six
包。 six
只是
/usr/lib/python3.5/site-packages/pkg_resources/extern/__init__.py
确切地说,它看起来如下:
names = 'packaging', 'pyparsing', 'six'
VendorImporter(__name__, names).install()
但是VendorImporter
是python
的一个相当不寻常的部分,它是setuptools
的一部分,因此可以预料到,我猜。简单来说,它从以下位置执行导入:
/usr/lib/python3.5/site-packages/six.py
哪个包含moves
好吧:
_MovedItems._moved_attributes = _moved_attributes
moves = _MovedItems(__name__ + ".moves")
_importer._add_module(moves, "moves")
现在让我们看看pacman
如何处理:
# pacman -Qo /usr/lib/python3.5/site-packages/pkg_resources/extern/__init__.py
/usr/lib/python3.5/site-packages/pkg_resources/extern/__init__.py is owned by python-setuptools 1:25.1.3-1
是的,extern/__init__.py
归setuptools
所有,这正是我们所期望的。现在
# pacman -Qo /usr/lib/python3.5/site-packages/six.py
/usr/lib/python3.5/site-packages/six.py is owned by python-six 1.10.0-2
我们发现six
是python-six
的一部分。
因此,我们发现python-setuptools
依赖于python-six
。因此,python-setuptools
dependency chain不正确,因为它没有列出python-six
,这有时是包管理器(不仅是pacman
,而是所有包管理器都遇到依赖链问题。时间)。
对于手头的问题,您需要手动安装python-six
,然后python-setuptools
将按预期工作:
pacman -S python-six