Ilekroć próbuję zainstalować dowolny pakiet za pomocą pip, pojawia się ten błąd importu:
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())
Wcześniej działało dobrze, nie jestem pewien, dlaczego powoduje ten błąd. Szukałem tego błędu, ale nie mogę nic znaleźć, aby go naprawić.
Daj mi znać, jeśli będziesz potrzebować dalszych informacji, zaktualizuję moje pytanie.
pip install --upgrade pip
aktualizowałem pip na serwerze, na którym nie mam uprawnień administratora. Odinstalowanie pipapython -m pip uninstall pip
rozwiązało mój problem.Odpowiedzi:
Musisz przypadkowo zaktualizować swój systemowy pip (prawdopodobnie przez coś takiego
sudo pip install pip --upgrade
)pip 10.x dostosowuje, gdzie znajdują się jego elementy wewnętrzne.
pip3
Polecenia widzisz to jeden dostarczony przez opiekuna (przypuszczalnie w oparciu o Debiana?) I nie jest to plik zarządzany przez PIP.Możesz przeczytać więcej na ten temat na trackerze problemów pip
Prawdopodobnie będziesz chciał nie aktualizować swojego pipa systemowego i zamiast tego użyć virtualenv.
Aby odzyskać
pip3
plik binarny, musisz to zrobićsudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
.Jeśli chcesz kontynuować na „nieobsługiwanym terytorium” (uaktualnianiu pakietu systemowego poza menedżerem pakietów systemowych), prawdopodobnie możesz
python3 -m pip ...
zamiast tego uciecpip3
.źródło
sudo apt install python3-pip --reinstall
nie naprawiłem problemu, jednak mogę zainstalować pakiet za pomocąpython3 -m pip
. Dzięki za pomoc. Zaznaczam to jako zaakceptowane.sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
dla python2!Możemy usunąć błąd, modyfikując plik pip.
Sprawdź lokalizację pliku:
Przejdź do tej lokalizacji ( / usr / bin / pip ) i otwórz terminal
Wchodzić:
$ sudo nano pip
Możesz zobaczyć:
Zmień na:
następnie ctrl + o napisz zmiany i wyjdź
Mam nadzieję, że to zrobi !!
źródło
AttributeError: module 'pip.__main__' has no attribute 'main'
pip3
Themain()
przesuwa siępip._internal
. Deklaracja importu powinna zostać zmieniona nafrom pip._internal import main
Dla rodziny Ubuntu, Debian, Linux Mint
Dzięki powyższemu wyjaśnieniu Anthony'ego możesz zachować oryginalny systemowy pip (w / usr / bin / i dist-packages /) i usunąć ręcznie zainstalowany pip (w ~ / .local /), aby rozwiązać konflikt:
$ python3 -m pip uninstall pip
Ubuntu / Debian pip v8.1.1 (16.04) z
python3-pip
pakietu debian (patrz$ pip3 -V
) pokazuje te same wyniki wyszukiwania co najnowszy pip v10.0.1 i instaluje najnowsze moduły z PyPI w porządku. Ma działającepip
polecenie (już w $ PATH), a także ładną--user
opcję domyślnie załataną od 2016 roku. Patrząc na informacje o wydaniu pip , nowsze wersje dotyczą głównie poprawek błędów specyficznych dla poszczególnych przypadków użycia i niektórych nowych funkcji, więc nie wszyscy muszą jeszcze przyspieszyć aktualizację pip. Poza tym nowy pip 10 można wdrożyć na wirtualnych wirtualnych językach Pythona.Ale bez względu na pipsy, twój system operacyjny pozwala na szybką instalację popularnych modułów Pythona (w tym numpy) z APT, bez potrzeby pipowania, na przykład:
$ sudo apt install python3-numpy python3-scipy
(z zależnościami systemowymi)$ sudo apt install python3-pip
( łatka Debiana, nieco starsza, ale to nie ma znaczenia)Nazwy pakietów z prefiksem
python-
są dla języka Python 2; i przedrostkiempython3-
są dla Python 3 (np. python3-panda). Są tysiące i przechodzą testy integracyjne w ramach Debiana i Ubuntu. Jeśli nie chcesz instalować na poziomie użytkownika (pip install --user
opcja) lub w virtualenv / venv, apt może być tym, czego potrzebujesz. Te pakiety systemowe są również dostępne z wirtualnych środowisk, ponieważ virtualenv z wdziękiem wróci do korzystania z bibliotek systemowych podczas importowania, jeśli środowiska nie otrzymały kopii modułów. Twoje niestandardowo zainstalowane (z pipem--user
) moduły dla poszczególnych użytkowników~/.local/lib
również je zastąpią.Uwaga: ponieważ jest to instalacja ogólnosystemowa , rzadko trzeba je usuwać (należy pamiętać o zależnościach systemu operacyjnego). Jest to wygodne dla pakietów z wieloma zależnościami systemowymi (np. Z scipy lub matplotlib), ponieważ APT będzie śledzić i zapewnia wszystkie wymagane biblioteki systemowe i rozszerzenia C, podczas gdy w przypadku pipa nie masz takich gwarancji .
W rzeczywistości, dla ogólnosystemowych pakietów Python (w przeciwieństwie do na użytkownika, poziom katalogu domowego lub niższy), Ubuntu oczekuje użycia menedżera pakietów APT (zamiast
sudo pip
), aby uniknąć uszkodzenia systemu operacyjnego:sudo pip3
celuje w ten sam/usr/lib/python3/dist-packages
katalog, w którym APT przechowuje system operacyjny wrażliwe moduły. Najnowsze wydania Debian / Ubuntu w dużym stopniu zależą od Python 3, więc jego wstępnie zainstalowanymi modułami zarządzaapt
i nie należy ich zmieniać.Więc jeśli używasz
pip3 install
polecenia, upewnij się, że działa on w izolowanym środowisku wirtualnegosudo apt install python3-virtualenv
dewelopera , takim jak virtualenv ( ) lub z wbudowanym Python3 (-m venv
), lub na poziomie użytkownika (--user
opcja pip, domyślnie w Ubuntu pip od 2016 r.), ale nie w całym systemie (nigdysudo pip3
!), ponieważ pip zakłóca działanie menedżera pakietów APT i może wpływać na komponenty systemu operacyjnego Ubuntu , gdy nieoczekiwanie zmieni się używany przez system moduł python. Powodzenia!P. S. Wszystkie powyższe dotyczą rozwiązania „idealnego” (sposób Debian / Ubuntu).
Jeśli nadal chcesz używać wyłącznie nowego pip3 v10, istnieją 3 szybkie obejścia:
bash
) - a pip3 v10 stanie się dostępny (patrzpip3 -V
). Pip3 v8 debiana pozostaje zainstalowany, ale jest uszkodzony; lub$ hash -d pip3 && pip3 -V
odświeżenia ścieżki pliku pip3 w zmiennej $ PATH. Pip3 v8 debiana pozostaje zainstalowany, ale jest uszkodzony; lub$ sudo apt remove python3-pip && hash -d pip3
całkowitego odinstalowania pip3 v8 Debiana, na korzyść nowego pip3 v10.Uwaga: Zawsze będziesz musiał dodać
--user
flagę do każdego pipa nie dostarczonego przez Debiana, chyba że jesteś w virtualenv! (wdraża pakiety Pythona~/.local/
, domyślnie w dostarczonych przez debian / ubuntu python3-pip i python-pip od 2016). Twoje użycie pip 10 w całym systemie, poza virtualenv, nie jest tak naprawdę obsługiwane przez Ubuntu / Debian. Nigdysudo pip3
!Dalsze szczegóły:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100
źródło
pip
lokalnej z--user
, tj. Bezsudo
, wpływa na moją zdolność do uruchomienia zainstalowanego aptpip
? Myślałem, że te dwa będą współistnieć. Ale jak pokazuje ta lista , apt po zainstalowaniu pękapython3 -m pip install --user --upgrade pip
. Nie szukam rozwiązania - jestem naprawdę ciekawy, co się tutaj dzieje./usr/bin/pip3
zamiast tej zainstalowanej jako--user
(~/.local/bin/pip*
) zgodnie z systemem operacyjnym $ PATH, który wciąż jest ustawiony do uruchamiania systemowa wersja opakowania, ale nie bibliotek.~/.local/lib/python3.?/site-packages/pip
który ma pierwszeństwo przed systemem apt apt we względnym imporcie Pythona (lokacja użytkownika ma wyższy priorytet niż globalne biblioteki lib). A ponieważ starsze opakowanie próbujefrom pip import main
zamiastfrom pip._internal
swojej__main__
klasy w stosunku do nowszej wersji pakietu pip, polecenie pip z gist kończy się niepowodzeniemImportError: cannot import name 'main'
. Tak więc oba pipsy mogą współistnieć (na dysku), ale funkcjonalność oryginalnego systemu zostanie „zepsuta” ..--user
.pip install --user
co mi to zrobiło. (Mam Python 2.7, Python 3.6 i Python 3.7, wszystkie zainstalowane na Ubuntu 18.04 LTS.)rozwiązany tylko w jednym kroku.
Ja również napotkałem ten problem, ale można go rozwiązać po prostu jednym poleceniem bez zawracania głowy i marnowania czasu, a ja wypróbowałem to na wielu systemach, jest to najczystsze rozwiązanie tego problemu. I to jest:
Dla python3: -
sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
.Dzięki temu możesz po prostu zainstalować pakiety za pomocą
pip3
. sprawdzić użyciepip3 --version
.Dla starszych wersji, należy:
sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
.Dzięki temu teraz możesz po prostu zainstalować pakiety za pomocą
pip
. sprawdzić użyciepip --version
.źródło
Użyj
python -m pip install
zamiastpip install
Przykład:
Plik wykonywalny
pip
(lub.pip3
) Jest dostarczany przez Twoją dystrybucję (python-pip
pakiet na Ubuntu 16.04) i znajduje się na/usr/bin/pip
.Dlatego nie jest aktualizowany z samym
pip
pakietem podczas aktualizacji pip i może się zepsuć.Jeśli używasz
python -m pip
bezpośrednio, np. Jak w:przechodzi przez ścieżkę Pythona, znajduje najnowszą wersję pip i wykonuje ten plik.
Opiera się na fakcie, że plik jest wykonywalny
import
, ale jest to bardzo standardowy typ interfejsu i dlatego jest mniej prawdopodobne, że się zepsuje niż trudniejszy skrypt Debiana.Następnie zalecamy dodanie następujących aliasów do
.bashrc
:Plik Ubuntu 18.04
/usr/bin/pip3
:i prawdopodobnie
main
zostałpip
w pewnym momencie usunięty z tego, co zepsuło.Wydaje się, że łamanie zatwierdzania pip wygląda następująco: 95bcf8c5f6394298035a7332c441868f3b0169f4 „Przenieś wszystkie wewnętrzne interfejsy API do pip._internal”, które przeszły do pip 18.0.
Testowane w Ubuntu 16.04 po aktualizacji z
pip3
9.0.1 do 18.0.pyenv
Ostatecznie jednak w przypadku poważnego rozwoju Pythona po prostu zalecam zainstalowanie własnego lokalnego Pythona za pomocą pyenv + virtualenv, który obejmie również ten błąd Ubuntu: /ubuntu/682869/how-do-i- install-a-different-python-version-using-apt-get / 1195153 # 1195153
źródło
Możesz rozwiązać ten problem, ponownie instalując pip.
Użyj jednego z następujących poleceń wiersza poleceń, aby ponownie zainstalować pip:
Python2:
Python3:
źródło
Sprawdź, czy pip został zapisany w pamięci podręcznej na innej ścieżce. Aby to zrobić, wywołaj $ pip i sprawdź, czy ścieżka jest inna niż wskazana w błędzie, jeśli tak jest:
Gdy pamięć podręczna zostanie wyczyszczona, pip będzie znów działać. odniesienie: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
źródło
Pracuję na systemie, w którym mam sudo apt, ale nie mam sudo pip. (I nie ma dostępu do su). Dotarłem do tej samej sytuacji, postępując zgodnie z radą pip:
Żadna z pozostałych poprawek nie działała dla mnie, ponieważ nie mam wystarczających uprawnień administratora. Jednak kilka rzeczy utkwiło mi w pamięci po przeczytaniu tego:
Znalazłem więc ten wiersz poleceń, aby przywrócić mnie z powrotem do miejsca, w którym byłem. Jeśli używasz innej wersji niż 8.1.1, oczywiście będziesz chciał zmienić tę część linii.
To jedyna rzecz, która działała dla mnie, ale działała idealnie!
źródło
Odzyskaj za pomocą
python3 -m pip install --user pip==9.0.1
(lub wersji, która działała)źródło
To samo stało się ze mną na Pixelbook przy użyciu nowego LXC (strech). To rozwiązanie jest bardzo podobne do przyjętego, z jedną subtelną różnicą, dla mnie poprawiony pip3.
To zderzyło wersję, a teraz działa zgodnie z oczekiwaniami.
Znalazłem to tutaj ... Python.org: Upewnij się, że pip jest aktualny
źródło
Ten sam problem spotkałem w moim systemie Ubuntu 16.04. Udało mi się to naprawić, ponownie instalując pip za pomocą następującego polecenia:
curl https://bootstrap.pypa.io/get-pip.py | sudo python3
źródło
Powyższe polecenia nie działały dla mnie, ale były bardzo pomocne:
źródło
W Ubuntu 18.04.1 Bionic Beaver musisz się wylogować i zalogować ponownie (ponowne uruchomienie nie jest konieczne), aby uzyskać odpowiednie środowisko.
źródło
Używam
sudo apt remove python3-pip
wtedypip
działa.źródło
pip
jest dla Pythona 2. Używa OPpip3
, wersja Python 3pip
, którą właśnie usunąłeś. Te dwa są odrębne i niewymienne.W przypadku Pythona w wersji 2.7 @Anthony rozwiązanie działa idealnie, zmieniając Python3 na Python w następujący sposób:
źródło
To, co zadziałało, aby naprawić błąd przy użyciu,
pip3
to:sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3
Wszystko działa poprawnie:
Może nowa wersja pip 10.0.1 nie aktualizuje pliku binarnego w / usr / bin? (co wydaje się, że nie)
EDYCJA: ten sam problem występuje w Ubuntu 18.04. Najlepszym rozwiązaniem, jakie znalazłem, jest dowiązanie plików binarnych pip
/home/<user/.local/bin
do/usr/local/bin
lub/usr/bin
(w zależności od twoich preferencji) w następujący sposób:UWAGA: wymienić
<user>
aktualnego użytkownikaPowiązane wersje (najnowsze) znajdują się w:
Wersja 3.6:
/home/demon/.local/lib/python3.6/site-packages/pip (python 3.6)
Wersja 2.7:
/home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)
źródło
/usr/bin
Jednak naprawdę nie powinieneś zadzierać bezpośrednio z plikami . A twójPATH
błąd jest błędny, jeśli/usr/local/bin
nie wcześniej/usr/bin
./usr/local/bin
. Jest tylko w/home/<user>/.local/bin
i / lub/home/<user>/.local/lib/python<version>/site-packages/pip
w nowych wersjach (wersja 10.0 + nie aktualizuje pliku binarnego/usr/bin
). Stąd powód utworzenia kopii lub dowiązania symbolicznego pliku binarnego w/usr/bin
lub/usr/local/bin
(w zależności od preferencji użytkownika), aby pip mógł być uruchamiany globalnie z wiersza poleceń.pip
Domyślnie binarna jest najnowsza wersja zainstalowana w systemieSztuczka i też działa
źródło
Miałem ten sam błąd, ale
python -m pip
nadal działałem, więc naprawiłem go z opcją nuklearnąsudo python -m pip install --upgrade pip
. Zrobił to dla mnie.źródło
Z tego, co jest warte, miałem problem z
pip
(niepip2
lubpip3
):W jakiś sposób (nie pamiętam jak) miałem zainstalowane w Pythonie rzeczy w języku Python
~/.local
. Po usunięciu stamtąd katalogu pip,pip
zacząłem ponownie działać.źródło
Coś jest nie tak z pakietami, kiedy generuje plik de / usr / bin / pip, musisz zmienić import:
do
To rozwiązuje problem, nie jestem pewien, dlaczego to wygenerowało, ale mówi coś w następującym problemie:
Po aktualizacji pip 10 na pyenv „ImportError: nie można zaimportować nazwy„ main ””
źródło
Możesz spróbować:
źródło
pip
pip3
Wystąpił również ten problem, gdy chciałem zaktualizować system z wersji 9.0.1 do 19.2.3.Po uruchomieniu
pip3 install --upgrade pip
,pip
wersja staje 19.2.3. Alemain()
został wprowadzony wpip._internal
najnowszej wersji, która pozostawiapip3
zepsute.Więc w pliku
/usr/bin/pip3
, należy wymienićline 9
:from pip import main
zfrom pip._internal import main
. Problem zostanie naprawiony, działa tak samo dlapython2-pip
. (Testowane na dystrybucji Ubuntu 18.04)Według @Vincent H. odpowiedź
źródło
Uruchom następujące polecenia, aby wykonać poprawkę. Po uruchomieniu
python3 -m pip install --upgrade pip
uruchom następujące polecenie.Źródło: https://github.com/pypa/pip/issues/5221
źródło
możesz po prostu naprawić ścieżki pip i pip3 za pomocą
update-alternatives
pierwszą rzeczą, którą powinieneś sprawdzić, jest twój bieżący
$PATH
przebieg,echo $PATH
a zobaczysz, że możesz znaleźć,/usr/local/bin
gdzie zwykle są pip3 i pipnastąpiła zmiana systemu szuka tutaj
/bin/pip
i/bin/pip3
tak powiem naprawić PATH dodając do~/.bash_profile
pliku, więc nie ustąpiexport PATH=$PATH:/usr/local/bin
a następnie sprawdzanie jest ustalone za pomocąwhich pip
iwhich pip3
jeśli nie to użyj
update-alternatives
aby to naprawića jeśli chcesz wskazać pip na pip3, to
źródło
To zadziałało dla mnie!
Teraz odinstaluj wersję PIP i zainstaluj ją ponownie, używając następujących poleceń.
Jeśli pip jest uszkodzony, użyj:
Mam nadzieję, że to pomoże!
źródło
import main z pip._internal
Edytuj kod pip z
źródło
/usr/bin/pip3
...Jak powiedział @cryptoboy - sprawdź, którą wersję pip / python zainstalowałeś
a następnie sprawdź, czy w folderze .local / lib / nie ma potrzebnych bibliotek.
Zrobiłem kopię zapasową ustawień podczas migracji do nowszej wersji Kubuntu i miałem folder .local / lib / python2.7 / w moim katalogu domowym. Zainstalowany python 3.6. Właśnie usunąłem stary folder i teraz wszystko działa świetnie!
źródło
W Debianie musisz najpierw zaktualizować apt ....
Jeśli pominiesz „sudo apt-get update -qq”, twój pip zostanie uszkodzony i wyświetli błąd „nie mogę znaleźć głównego”.
źródło
Ten błąd może być pozwoleniem. Przetestuj więc polecenie z flagą -H :
źródło
Użyj następującego polecenia przed wykonaniem dowolnego polecenia pip
To będzie działać
źródło