2016-08-02 94 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 
相關問題