2016-08-02 56 views
1

我无法导入pkg_resources。每当我想它显示ImportError:没有名为'pkg_resources.extern.six.moves'的模块; 'pkg_resources.extern.six'不是包

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(其中不存在6包)。你能指出我做错了什么吗?

我使用Arch Linux的,Python的3.5.2

+0

能否请您发布您的代码......我觉得可能是进口的问题。导致它对我的工作很好。 –

+0

@RohitSalunke对不起,没有得到你。我没有任何代码。我只是不能在python3控制台中导入pkg_resources。 –

+0

好的,在python lib中可能会有问题。尝试运行'sudo apt-get install --reinstall python-pkg-resources'。在我的例子中'import pkg_resources'工作正常。 –

回答

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__.pysetuptools所有,这就是我们所要的pected。现在

# 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 

我们看到sixpython-six一部分。

因此,我们发现python-setuptools依赖于python-sixpython-setuptools dependency chain因此是不正确的,因为它没有列出python-six,这是有时包管理器发生的事情(不仅仅是pacman,但所有包管理器经常遇到依赖链问题)。

手头的问题,您需要手动安装python-six,然后python-setuptools会达到预期效果:

pacman -S python-six 
相关问题