2016-08-02 34 views
1

Ich kann pkg_resources nicht importieren. Jedes Mal, wenn ich versuchte, es zeigtImportError: Kein Modul namens 'pkg_resources.extern.six.moves'; 'pkg_resources.extern.six' ist kein Paket

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 

Ist from pkg_resources-/usr/lib/python3.5/site-packages/pkg_resources/extern bezieht (in dem es keine sechs Paket). Kannst du darauf hinweisen, was ich falsch mache?

ich Arch Linux verwenden, Python 3.5.2

+0

Sie bitte Ihren Code schreiben ... Ich denke, es könnte den Import Problem werden. Weil es gut für mich funktioniert. –

+0

@RohitSalunke Sorry hat dich nicht bekommen. Ich habe keinen Code. Ich kann einfach nicht pkg_resources in Python3 Konsole importieren. –

+0

ok es könnte ein Problem in Python lib sein. versuchen Sie 'sudo apt-get install --install python-pkg-resources' auszuführen. In meinem Fall funktioniert 'import pkg_resources' korrekt. –

Antwort

2

Nun, es gibt kein six dort Paket. six ist nur ein Name

/usr/lib/python3.5/site-packages/pkg_resources/extern/__init__.py 

Um genau zu sein in

definiert, es sieht aus wie folgt:

names = 'packaging', 'pyparsing', 'six' 
VendorImporter(__name__, names).install() 

Aber VendorImporter ein eher seltenes Stück python ist, ist es Teil der setuptools ist daher zu erwarten, , Ich vermute. In einfachen Worten führt er den Import von: der nun

_MovedItems._moved_attributes = _moved_attributes 

moves = _MovedItems(__name__ + ".moves") 
_importer._add_module(moves, "moves") 

lassen sehen, wie pacman beschäftigt sich mit, dass:

/usr/lib/python3.5/site-packages/six.py 

Welche moves in Ordnung enthält

# 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 

Rechts, extern/__init__.py gehört setuptools, das ist was wir ex erkannt. Jetzt

# 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 

Wir sehen, dass six Teil python-six ist.

So haben wir festgestellt, dass python-setuptools von python-six abhängig ist. Die python-setuptools dependency chain ist daher falsch, da es python-six nicht auflistet, das passiert manchmal mit Paketmanagern (nicht nur pacman, sondern alle Paketmanager leiden von Zeit zu Zeit unter Problemen mit Abhängigkeitsketten).

Für das Problem auf der Hand, müssen Sie python-six manuell installieren, und python-setuptools wird dann wie erwartet:

pacman -S python-six