Eroare după actualizarea pip: nu poate importa nume 'principal'

Ori de câte ori eu sunt încercarea de a instala orice pachet folosind pip, primesc aceasta eroare de import:

guru@guru-notebook:~$ pip3 install numpy
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'


guru@guru-notebook:~$ cat `which pip3`
#!/usr/bin/python3
# GENERATED BY DEBIAN

import sys

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':
    sys.exit(main())

A fost de lucru bine mai devreme, eu nu sunt sigur de ce se organizează această eroare. Am cautat despre aceasta eroare, dar poate't găsi nimic care să-l repara.

Te rog, lasă-mă să știu dacă aveți nevoie de orice alte detalii, eu va actualiza întrebarea mea.

Comentarii la întrebare (3)
Soluția

Trebuie să aveți accidental un upgrade de sistem pip (probabil prin ceva de genul sudo pip instala pip --upgrade)

pip 10.x reglează unde sale interne sunt situate. Anii pip3 ordon're a vedea este una prevăzută de pachetul de întreținere (probabil bazată pe debian aici?) și nu este un fișier gestionat de pip.

Puteți citi mai multe despre acest lucru pe pip's issue tracker

Te'll probabil vrei sa nu upgrade-ul dvs. de sistem pip și în loc să folosească o așa.

Pentru a recupera pip3 binar te'll nevoie pentru a sudo python3 -m pip dezinstalare pip && sudo apt instala python3-pip ... reinstalați.

Dacă doriți să continuați în "neacceptat teritoriul" (modernizarea unui pachet de sistem în afara sistemului package manager), probabil, puteți obține departe cu python3 -m pip ... "în loc de" pip3.

Comentarii (17)

Eroarea poate fi rezolvată prin modificarea pip fișier

Verificați locația fișierului:

$ which pip

calea -> /usr/bin/pip

Du-te la locația respectivă /usr/bin/pip și deschide un terminal.

Enter: $ sudo nano pip

Puteți vedea:

from pip import main
if __name__ == '__main__':
     sys.exit(main())

Modificarea:

import sys
from pip import __main__
if __name__ == '__main__':
     sys.exit(__main__._main())

apoi Ctrl + O scrie modificările și a ieși.

Sper că acest lucru va face!!

Comentarii (8)

Pentru familia Ubuntu, Debian, Linux Mint utilizatori

Datorită Anthony's explicație de mai sus, puteți păstra sistemul original pip (în /usr/bin/ și dist-pachete/) și elimina manual-instalat pip (în ~/.local/) pentru a rezolva conflictul: $ python3 -m pip dezinstalare pip Ubuntu/Debian pip v8.1.1 (16.04) din python3-pip pachet debian (a se vedea$ pip3 -V) arată aceleași rezultate de căutare ca cea mai recentă pip v10.0.1, și instalează cele mai recente module de la PyPI bine. Ea are un lucru pip comanda (deja în $PATH), plus frumos --utilizatorului opțiunea de patch-uri în mod implicit din 2016. Se uită la [pip note de lansare](https://pip.pypa.io/en/stable/news/), versiunile mai noi sunt în mare parte despre caz de utilizare specifice bug fixat și noi caracteristici, așa că *nu* toată lumea trebuie să se grăbească modernizarea pip încă. Și noi pip 10 poate fi implementat în Python virtualenvs, oricum. Dar, indiferent de sâmburi, sistemul de OPERARE vă permite să instalați rapid comun module Python (inclusiv numpy) cu APT, fără a fi nevoie de pip, de exemplu: $ sudo apt instala python3-numpy python3-scipy(cu sistem de dependențe) $ sudo apt instala python3-pip` (Debian-patch-uri pip, puțin mai în vârstă, dar nu't contează)

Rapid apt sintaxa memento (vă rugăm să consultați om apt pentru detalii): $ sudo apt update (la traducerea Ubuntu pachet de fișiere index de până-la-data de surse) $ apt căutare <python-pachetul nume> (full-text de căutare pe toate pachetele disponibile) $ apt show <python-pachetul nume> (afișează detaliat descrierea pachetului) $ sudo apt instala <python-pachetul nume> Pachetul nume prefixate cu python- sunt pentru Python 2; și prefixate cu python3- sunt pentru Python 3 (de exemplu python3-panda). Sunt mii, și vor fi supuse testarea de integrare în Debian și Ubuntu. Dacă nu caută să instalați la fiecare nivel de utilizator (pip instala --user opțiune) sau în virtualenv/venv, apt ar putea fi ceea ce ai nevoie. Aceste pachete sunt accesibile din virtual envs de asemenea, ca așa grațios va cădea înapoi la folosind sistemul libs la import dacă envs don't au dat copii de module. Personalizat-instalat (cu pip --user) per-utilizator module în~/.local/libva trece peste ei. Rețineți, deoarece aceasta este o [system-wide](https://askubuntu.com/questions/95037/what-is-the-best-way-to-install-python-packages/116645#116645) instalare,&#39;d rareori nevoie pentru a le elimina (trebuie să fie atent cu privire la sistemul de OPERARE dependențe). Acest lucru este convenabil pentru pachete cu mai multe dependențe sistem (cum ar fi cu scipy sau matplotlib), ca APT va urmări și să furnizeze toate necesare sistemului libs și C extensii, în timp ce cu pip trebuie [nu există un astfel de garanții](http://matthew-brett.github.io/pydagogue/installing_on_debian.html). De fapt, de la nivel de sistem pachetele Python (în contrast cu per-utilizator, acasă dir nivel, sau mai mici), Ubuntu [așteaptă](https://askubuntu.com/a/116645) folosind managerul de pachete APT (mai degrabă decâtsudo pip) pentru a evita ruperea OS:sudo pip3obiective același/usr/lib/python3/dist-pachete de director unde APT magazine OS-sensibile module. Recent Debian/Ubuntu comunicate depind în mare măsură de Python 3, deci pre-instalat modulele sunt gestionate de " apt " și ar trebui't fi schimbat. Deci, dacă utilizați pip3 instala comandă, vă rugăm să vă asigurați că se execută într-un virtual izolat dev mediu, cum ar fi cu [așa](http://docs.python-guide.org/en/latest/dev/virtualenvs/#lower-level-virtualenv) (sudo apt instala python3-virtualenv), sau cu Python3 built-in (-m venv), sau de la o per-nivel de utilizator (--userpip opțiune, implicit în Ubuntu-cu condiția pip din 2016), dar *nu* la nivel de sistem (nusudo pip3`!), pentru pip interferează, cu exploatarea de la managerul de pachete APT și poate afecta sistemul de OPERARE Ubuntu componente atunci când un sistem folosit modul python este schimbat în mod neașteptat. Mult noroc!


P. S. Toate cele de mai sus este pentru 'ideal' soluție (Debian/Ubuntu). Dacă încă doriți să utilizați noul pip3 v10 exclusiv, sunt 3 rapid soluții:

  • pur și simplu deschideți o nouă bash sesiune (un terminal nou tab, sau de tip bash) - și pip3 v10 devine disponibil (a se vedea pip3 -V). debian's pip3 v8 rămâne instalat, dar este rupt; sau
  • comanda $ hash -d pip3 && pip3 -V pentru a reîmprospăta pip3 pathname în $PATH. debian's pip3 v8 rămâne instalat, dar este rupt; sau
  • comanda $ sudo apt de a elimina python3-pip && hash -d pip3 pentru a dezinstala debian's pip3 v8 complet, în favoarea noul pip3 v10. Notă: Veți avea nevoie întotdeauna să adaug --user flag pentru orice non-debian-cu condiția pip, dacă nu sunt într-o așa! (se desfășoară pachetele python pentru a ~/.local/, default în debian/ubuntu-cu condiția python3-pip și python-pip începând cu 2016). Utilizarea pip 10 la nivel de sistem, în afara așa, nu este într-adevăr susținut de Ubuntu/Debian. Nu sudo pip3! Mai multe detalii: https://github.com/pypa/pip/issues/5221#issuecomment-382069604 https://github.com/pypa/pip/issues/5240#issuecomment-381673100
Comentarii (4)

rezolvate intr-un singur pas.

Nu prea confruntat cu această problemă, Dar acest lucru poate fi rezolvat prin simpla 1 comandă, fără a deranja în jurul și de a pierde timp si am incercat pe mai multe sisteme it's cea mai curată soluție pentru această problemă. Și că's:

Pentru python3:- sudo python3 -m pip dezinstalare pip && sudo apt instala python3-pip ... reinstalați.

Prin aceasta , puteți pur și simplu instalați pachete folosind pip3. pentru a verifica utilizarea pip3 --version.

Pentru versiunile mai vechi, utilizare: sudo python -m pip dezinstalare pip && sudo apt install python-pip ... reinstalați`.

De asta, acum puteți pur și simplu instalați pachete folosind pip. pentru a verifica utilizarea pip --version.

Comentarii (0)

Folosi python -m pip instala "în loc de" pip instala`

Exemplu:

python -m pip install --user somepackage
python3 -m pip install --user somepackage

Anii pip (resp. pip3) executabil este oferit de distribuție (python-pip pachet pe Ubuntu 16.04) și situat în /usr/bin/pip.

Prin urmare, acesta nu este ținut la curent cu pip pachetul în sine, ca upgrade pip, și se poate rupe.

Dacă utilizați doar python -m pip direct, de exemplu, ca în:

python -m pip install --user somepackage
python3 -m pip install --user somepackage

se trece prin calea Python și găsește cea mai recentă versiune a pip, și execută fișierul.

Ea se bazează pe faptul că fișierul este executabil prin "import", dar că este un tip standard de interfață, și, prin urmare, mai puțin probabil pentru a rupe decât hackier Debian script.

Apoi m-am recomandăm să adăugați următoarele pseudonime pentru a ta .bashrc:

pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )

Testat în Ubuntu 16.04 după o actualizare de pip3` 9.0.1 la 18.0.

Comentarii (1)

Puteți rezolva această problemă prin reinstalarea pip.

Utilizați una dintre următoarele comenzi de linie de comandă pentru a reinstala pip:

Python2:

python -m pip uninstall pip && sudo apt install python-pip --reinstall

Python3:

 python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
Comentarii (0)

Verificați dacă pip a fost memorate în cache pe o altă cale, pentru a face acest lucru, apel $ care pip și verificați că drumul este diferit față de cel determinat în eroare, în cazul în care's cazul rula:

$ hash -r

Atunci când cache-ul este clar, pip va fi din nou de lucru. referință: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory

Comentarii (0)

Am'm execută pe un sistem unde am sudo apt, dar nu sudo pip. (Și nu su acces.) Am intrat și eu în aceeași situație urmând sfatul din pip:

utilizați pip versiunea 8.1.1, cu toate acestea 18.0 este disponibil. Tu ar trebui să ia în considerare actualizarea prin 'pip instala --upgrade pip' comandă.

Nici unul dintre alte remedieri lucrat pentru mine, pentru că eu nu't au suficiente privilegii de administrator. Cu toate acestea, câteva lucruri au ramas cu mine de lectură pe asta:

  • Nu ar trebui't au făcut acest lucru. Sigur, pip mi-a spus. A mințit.
  • Folosind-utilizatorul rezolvă o mulțime de probleme, concentrându-se pe utilizator-doar director.

Deci, am găsit această linie de comandă pentru a lucra pentru a reveni de unde am fost. Dacă ați fost utilizați o versiune diferită decât 8.1.1, evident că va dori să schimbe acea parte a liniei.

python -m pip install --force-reinstall pip==8.1.1 --user

Ca's singurul lucru care a lucrat pentru mine, dar a functionat perfect!

Comentarii (0)

Recupera cu python3 -m pip instala-utilizatorul pip==9.0.1` (sau versiunea care a lucrat)

Comentarii (0)

Același lucru mi s-a întâmplat pe Pixelbook folosind noua LXC (strech). Această soluție este foarte asemănătoare cu cea a acceptat, cu o diferență subtilă, whiched fix pip3 pentru mine.

sudo python3 -m pip install --upgrade pip

Asta l-a lovit versiunea, și acum funcționează cum era de așteptat.

Am găsit-o aici ... Python.org: a se Asigura pip este up-to-date

Comentarii (0)

Am întâlnit aceeași problemă pe Ubuntu 16.04 sistem. Am reușit să-l repara prin re-instalarea pip cu următoarea comandă:

curl https://bootstrap.pypa.io/get-pip.py | sudo python3

Comentarii (2)

Comenzile de mai sus n't de lucru pentru mine, dar alea au fost foarte utile:

sudo apt purge python3-pip
sudo rm -rf '/usr/lib/python3/dist-packages/pip'  
sudo apt install python3-pip
cd
cd .local/lib/python3/site-packages
sudo rm -rf pip*  
cd
cd .local/lib/python3.5/site-packages
sudo rm -rf pip*  
sudo pip3 install jupyter
Comentarii (0)

În ubuntu 18.04.1 Bionic Castor, aveți nevoie să vă conectați și să vă autentificați (repornire nu este necesar) pentru a obține un mediu adecvat.

$ sudo apt install python-pip

$ pip --version
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip install --upgrade pip

$ pip --version
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in 
    from pip import main
ImportError: cannot import name main

$ exit


$ pip --version
pip 18.1 from /home/test/.local/lib/python2.7/site-packages/pip (python 2.7)
Comentarii (0)

Eu folosesc sudo apt de a elimina python3-pipapoipip` funcționează.

 ~ sudo pip install pip --upgrade
[sudo] password for sen: 
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in 
    from pip import main
ImportError: cannot import name 'main'
➜  ~ sudo apt remove python3-pip   
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-wheel
  python3.5-dev
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  python3-pip
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 569 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 215769 files and directories currently installed.)
Removing python3-pip (8.1.1-2ubuntu0.4) ...
Processing triggers for man-db (2.7.5-1) ...
➜  ~ pip

Usage:   
  pip  [options]
Comentarii (1)

Pentru versiunea Python 2.7 @Anthony soluție funcționează perfect, prin schimbarea python3 a python, după cum urmează:

sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
Comentarii (0)

Ceea ce a funcționat pentru mine pentru a rezolva eroarea cu ajutorul pip3 a fost:

sudo cp-v /usr/local/bin/pip3 /usr/bin/pip3

Totul funcționează:

 demon@UbuntuHP:~$ pip -V
 pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

 demon@UbuntuHP:~$ pip2 -V
 pip 10.0.1 from /home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)

 demon@UbuntuHP:~$ pip3 -V
 pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

Poate noua versiunea 10.0.1 de pip nu't actualizare binar în /usr/bin ? (care se pare ca nu)

EDIT: aceeași problemă apare în Ubuntu 18.04. Cea mai bună soluție I'am găsit-o este să symlink pip binare de la /home/<user/.local/bin pentru a /usr/local/bin " sau " /usr/bin (în funcție de preferințele dumneavoastră), după cum urmează:

``bash ln-sv /home//.local/bin/pip /usr/local/bin/pip ln-sv /home//.local/bin/pip2 /usr/local/bin/pip2 ln-sv /home//.local/bin/pip2.7 /usr/local/bin/pip2.7 ln-sv /home//.local/bin/pip3 /usr/local/bin/pip3 ln-sv /home//.local/bin/pip3.6 /usr/local/bin/pip3.6

` **NOTĂ:** înlocuiți cu funcționare curentă a utilizatorului

Asociate versiuni (mai recente) sunt în:

Versiunea 3.6:

/home/demon/.local/lib/python3.6/site-pachete/pip (python 3.6)

Versiunea 2.7:

/home/demon/.local/lib/python2.7/site-pachete/pip (python 2.7)

Comentarii (4)

Vă rugăm să rulați următoarele comenzi pentru a face reparatii. După rularea python3 -m pip instala --upgrade pip, vă rugăm să executați următoarea comandă.

hash -r pip

Sursa: https://github.com/pypa/pip/issues/5221

Comentarii (0)

Truc și funcționează prea

sudo -H pip instala lxml

Comentarii (0)

Am avut aceeasi eroare, dar python -m pip a fost încă de lucru, asa ca am reparat-o cu opțiunea nucleară sudo python -m pip instala --upgrade pip. A făcut-o pentru mine.

Comentarii (0)

Pentru ce-l's valoare, eu am avut problema cu pip (nu pip2 " sau " pip3):

$ pip -V
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in 
    from pip import main
ImportError: cannot import name main

$ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

Cumva (nu pot't amintesc cum) am avut python instalat în~/.localedirector. Dupa ce am scos pip directorul de acolo,pip` a început să lucreze din nou.

$ rm -rf /home/precor/.local/lib/python2.7/site-packages/pip
$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
Comentarii (0)