2016-02-09 26 views
5

jestem instalowania Python 2.7 pakietów w systemie Ubuntu 14 i uruchomiony na problem gdzie „pip freeze” produkuje wyjście takiego ...Jak odzyskać od wyjątku odmrożenia pip?

$ pip freeze 
Exception: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main 
    status = self.run(options, args) 
    File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 74, in run 
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags) 
    File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 286, in from_dist 
    assert len(specs) == 1 and specs[0][0] == '==' 
AssertionError 

Storing debug log for failure in /home/ubuntu/.pip/pip.log 


$ cat /home/ubuntu/.pip/pip.log 
------------------------------------------------------------ 
/usr/bin/pip run on Tue Feb 9 21:00:36 2016 
Exception: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main 
    status = self.run(options, args) 
    File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 74, in run 
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags) 
    File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 286, in from_dist 
    assert len(specs) == 1 and specs[0][0] == '==' 
AssertionError 

jestem niepewny co było przyczyną tego stanu rzeczy.
Podejrzewam, że niepowodzenie programu easy_install mogło spowodować uszkodzenie.

Próbowałem ponownej instalacji pip.
To nie przyniosło efektu.

Podejrzewam, że będę musiał wykonać pełną deinstalację i ponowną instalację wszystkich pakietów Pythona za pośrednictwem pakietów PUP i Pythona związanych z Ubuntu za pośrednictwem apt-get. pakiet po pakiecie.

To będzie dość czasochłonne i nie jestem pewien, czy osiągnie pożądany rezultat.

Czy istnieje lepsze podejście do tego problemu?

Oto pakiety że zainstalowane przed uruchomieniem easy_install:

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml python-numpy 

Oto początkowe wyjątek, który dostałem od easy_install:

$ sudo easy_install pillow 
Searching for pillow 
Reading https://pypi.python.org/simple/pillow/ 
Best match: Pillow 3.1.1 
Downloading https://pypi.python.org/packages/source/P/Pillow/Pillow-3.1.1.zip#md5=3868f54fd164e65f95fbcb32f62940ae 
Processing Pillow-3.1.1.zip 
Writing /tmp/easy_install-Bvu_2f/Pillow-3.1.1/setup.cfg 
Running Pillow-3.1.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Bvu_2f/Pillow-3.1.1/egg-dist-tmp-lMm5Tk 
warning: no previously-included files found matching '.editorconfig' 
Building using 4 processes 
_imaging.c: In function ‘getink’: 
_imaging.c:474:9: warning: ‘r’ may be used uninitialized in this function [-Wmaybe-uninitialized] 
    int r, g, b, a; 
     ^
libImaging/Resample.c:87:45: warning: always_inline function might not be inlinable [-Wattributes] 
static float __attribute__((always_inline)) i2f(int v) { 
              ^
Building using 4 processes 
Building using 4 processes 
Building using 4 processes 
-------------------------------------------------------------------- 
PIL SETUP SUMMARY 
-------------------------------------------------------------------- 
version  Pillow 3.1.1 
platform  linux2 2.7.6 (default, Jun 22 2015, 17:58:13) 
      [GCC 4.8.2] 
-------------------------------------------------------------------- 
*** TKINTER support not available 
--- JPEG support available 
*** OPENJPEG (JPEG2000) support not available 
--- ZLIB (PNG/ZIP) support available 
--- LIBTIFF support available 
--- FREETYPE2 support available 
*** LITTLECMS2 support not available 
*** WEBP support not available 
*** WEBPMUX support not available 
-------------------------------------------------------------------- 
To add a missing option, make sure you have the required 
library, and set the corresponding ROOT variable in the 
setup.py script. 

To check the build, run the selftest.py script. 

Adding Pillow 3.1.1 to easy-install.pth file 
Installing pildriver.py script to /usr/local/bin 
Installing viewer.py script to /usr/local/bin 
Installing gifmaker.py script to /usr/local/bin 
Installing pilconvert.py script to /usr/local/bin 
Installing pilfont.py script to /usr/local/bin 
Installing pilfile.py script to /usr/local/bin 
Installing createfontdatachunk.py script to /usr/local/bin 
Installing explode.py script to /usr/local/bin 
Installing pilprint.py script to /usr/local/bin 
Installing player.py script to /usr/local/bin 
Installing thresholder.py script to /usr/local/bin 
Installing painter.py script to /usr/local/bin 
Installing enhancer.py script to /usr/local/bin 

Installed /usr/local/lib/python2.7/dist-packages/Pillow-3.1.1-py2.7-linux-x86_64.egg 
Processing dependencies for pillow 
Finished processing dependencies for pillow 
Exception in thread Thread-1: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner 
    self.run() 
    File "/usr/lib/python2.7/threading.py", line 763, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "/usr/lib/python2.7/multiprocessing/pool.py", line 330, in _handle_workers 
    debug('worker handler exiting') 
TypeError: 'NoneType' object is not callable 

Exception Exception in thread Thread-2: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner 
    self.run() 
    File "/usr/lib/python2.7/threading.py", line 763, in run 
    self.__target(*self.__args, **self.__kwargs) 
    File "/usr/lib/python2.7/multiprocessing/pool.py", line 357, in _handle_tasks 
    debug('task handler got sentinel') 
TypeError: 'NoneType' object is not callable 

TypeError: TypeError("'NoneType' object does not support item deletion",) in <Finalize object, dead> ignored 
[email protected]:~/nvidia_installers/cuda$ 

byłem następnie w stanie zainstalować poduszkę poprzez pip .

Zauważyłem, że na mojej ścieżce znajdują się 2 różne pakiety dystrybucyjne.
To wydaje się być trochę dziwne.

>>> import sys 
>>> import pprint 
>>> pp = pprint.PrettyPrinter(indent=4) 
>>> pp.pprint(sys.path) 
[ '', 
    '/usr/lib/python2.7', 
    '/usr/lib/python2.7/plat-x86_64-linux-gnu', 
    '/usr/lib/python2.7/lib-tk', 
    '/usr/lib/python2.7/lib-old', 
    '/usr/lib/python2.7/lib-dynload', 
    '/usr/local/lib/python2.7/dist-packages', 
    '/usr/lib/python2.7/dist-packages'] 

Oto pełna procedura, że ​​mam następujący:
Install Caffe on EC2 from scratch

Rozumiem, że wersja pip wspierany przez apt-get jest bardzo stary.
Próbowałem aktualizacji pip.
Otrzymuję błędy "Owned by OS".
Nie jestem pewien, jak odejść od używania apt-get tutaj i jakie są tego konsekwencje.

$ pip install -U pip 
Downloading/unpacking pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-8.0.2-py2.py3-none-any.whl#md5=2056f553d5b593d3a970296f229c1b79 
    Downloading pip-8.0.2-py2.py3-none-any.whl (1.2MB): 1.2MB downloaded 
Installing collected packages: pip 
    Found existing installation: pip 1.5.4 
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, owned by OS 
    Can't roll back pip; was not uninstalled 
Cleaning up... 
Exception: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main 
    status = self.run(options, args) 
    File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run 
    requirement_set.install(install_options, global_options, root=options.root_path) 
    File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install 
    requirement.install(install_options, global_options, *args, **kwargs) 
    File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install 
    self.move_wheel_files(self.source_dir, root=root) 
    File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files 
    pycompile=self.pycompile, 
    File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files 
    clobber(source, lib_dir, True) 
    File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber 
    os.makedirs(destsubdir) 
    File "/usr/lib/python2.7/os.py", line 157, in makedirs 
    mkdir(name, mode) 
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/pip-8.0.2.dist-info' 

Storing debug log for failure in /home/ubuntu/.pip/pip.log 

$ sudo pip install -U pip 
Downloading/unpacking pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-8.0.2-py2.py3-none-any.whl#md5=2056f553d5b593d3a970296f229c1b79 
    Downloading pip-8.0.2-py2.py3-none-any.whl (1.2MB): 1.2MB downloaded 
Installing collected packages: pip 
    Found existing installation: pip 1.5.4 
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, owned by OS 
Successfully installed pip 
Cleaning up... 

$ pip --version 
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7) 
[email protected]-10-234-31-217:~$ pip freeze 
Exception: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main 
    status = self.run(options, args) 
    File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 74, in run 
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags) 
    File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 286, in from_dist 
    assert len(specs) == 1 and specs[0][0] == '==' 
AssertionError 

Storing debug log for failure in /home/ubuntu/.pip/pip.log 

Inną metodą uaktualniania pip również nie powiodło się:

$ sudo pip install --upgrade pip 
The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 
The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 
/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:315: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning. 
    SNIMissingWarning 
/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:120: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. 
    InsecurePlatformWarning 
Requirement already up-to-date: pip in /usr/local/lib/python2.7/dist-packages 
/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:120: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. 
    InsecurePlatformWarning 

$ pip freeze 
Exception: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main 
    status = self.run(options, args) 
    File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 74, in run 
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags) 
    File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 286, in from_dist 
    assert len(specs) == 1 and specs[0][0] == '==' 
AssertionError 

Storing debug log for failure in /home/ubuntu/.pip/pip.log 

$ ls -lF /home/ubuntu/.cache/pip/http 
ls: cannot access /home/ubuntu/.cache/pip/http: No such file or directory 
$ ls -lF /home/ubuntu/.cache 
total 0 
-rw-r--r-- 1 ubuntu ubuntu 0 Feb 6 00:39 motd.legal-displayed 
+0

Czy obejrzałeś plik dziennika, o którym wspomina? – scrappedcola

+0

tak. powiela dokładnie informacje wydrukowane na ekranie. brak dodatkowych informacji. –

+0

Czy zaktualizowałeś pip lub wypisałeś którekolwiek z rozwiązań tutaj: http://stackoverflow.com/questions/27711184/why-is-pip-raising-an-assertionerror-on-pip-freeze – scrappedcola

Odpowiedz

5

Aby zainstalować na Debianie pip oparte dystrybucji Linux (w tym Ubuntu), miałem dobre wyniki za pomocą easy_install z pakietu python-setuptools. Wygląda to tak:

sudo apt-get install python-setuptools 
sudo easy_install pip 

Wygląda na to, że masz już zainstalowaną łatwą_instalację. W każdym razie, zanim spróbujesz zainstalować pip w ten sposób, powinieneś spróbować wyczyścić jak najwięcej twoich obecnych ustawień, jak możesz. Usunąłbym pakiet python-pip, usunąłem wszelkie inne ślady zaktualizowanego pip, a także usunęłem ślady modułu poduszki, ponieważ to właśnie instalowałeś, gdy coś zaczęło działać źle.Może coś takiego:

sudo apt-get remove --purge python-pip 
sudo rm -rf /usr/local/lib/python2.7/{dist,site}-packages/pip* 
sudo rm -rf /usr/local/lib/python2.7/{dist,site}-packages/pillow* 

Wreszcie podczas korzystania easy_install lub pip zainstalować coś który zawiera polecenia oprócz modułu Pythona import-stanie, komenda zostanie oddany w /usr/local/bin, więc należy upewnić się, że /usr/local/bin znajduje się w powłoce użytkownika PATH. Będzie tam dostępne polecenie pip. (Użyłbym tylko easy_install do instalacji pip, a następnie użyj pip do zainstalowania dowolnego innego pakietu python.)

EDIT: przy okazji, "początkowy wyjątek od easy_install pillow" nie jest wyjątkiem, ani błędem. Pokazuje niektóre nieskuteczne ostrzeżenia kompilatora i niektóre funkcje nie zostały włączone, ale wygląda na to, że zadziałały. Prawdopodobnie były to późniejsze akcje z pipem, które spowodowały problem dla pip.

dużo późniejsza edycja 2: Miałem "mózg" i napisałem /usr/local/lib, gdzie miałem na myśli /usr/local/bin w ostatnim oryginalnym akapicie powyżej. Naprawiono teraz.

+0

który działał pięknie. Dziękuję Ci –