Pip3 ImportError çalıştırılıyor: 'main' adı alınamıyor


21

Scipy'i kurmak istiyorum (zaten Numpy kurulu). İşletim sistemi ve IDLE3 (3.5.2) ile Python 3.5.1-3 yüklü. Terminalde vurduğumda

sudo pip3 install scipy

Çıktı

Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'

Zaten pip3'ü yeniden yüklemeyi ve işletim sistemini yeniden başlatmayı denedim, ancak değişmedi. Pip3 başka biriyle garip bir şekilde çalışıyor mu?

Yanıtlar:


10

numpy ve scipy, şu anda desteklenen tüm Ubuntu sürümlerinin varsayılan havuzlarındadır. Python 3.x için numpy ve scipy kurmak için terminali açın ve şunu yazın:

sudo apt update    
sudo apt install python3-numpy python3-scipy  

Python 2.x için:

sudo apt update  
sudo apt install --no-install-recommends python2.7-minimal python2.7 # this line is only necessary for Ubuntu 17.10 and later 
sudo apt install python-numpy python-scipy

1
python3-scipy iyi çalıştı. Teşekkürler!
Tersinir Domuz Köpeği

1
Başka bir yanıtın belirttiği gibi, bu cevap pip ile ilgili olan temel sorun ile ilgili değildir.
cjauvin

Kötü bir yöntem ...
darkwoolf

26

Yerine python -m pip installkullanınpip install

Misal:

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

pipYükseltmeden sonra bu sorunu almaya başladım :

pip install --upgrade --user pip

pip(Solunum. pip3) Yürütülebilir dağıtımınız (tarafından sağlanan python-pipUbuntu 16.04 üzerinde paket).

Bu nedenle, pippip yükselttikçe paketin kendisi ile güncel tutulmaz ve kırılabilir.

Sadece python -m pipdoğrudan kullanıyorsanız, örneğin:

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

Python yolunuzdan geçer ve pip'in en son sürümünü bulur ve bu dosyayı yürütür.

Bu dosyanın yürütülebilir olması gerçeğine dayanır, ancak bu çok standart bir arabirim türüdür ve bu nedenle hackier Debian betiğinden daha az kırılma olasılığı vardır.

Ardından, aşağıdaki takma adları eklemenizi öneririz .bashrc:

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

Ubuntu 18.04 /usr/bin/pip3dosyası şunları yapar:

from pip import main

ve muhtemelen bir noktada o şeyleri kırdı bir noktada mainkaldırıldı pip.

Sonlandırma pip taahhüdü şu şekilde görünüyor: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Tüm dahili API'leri pip 18.0'a giren pip._internal'a taşıyın .

9.0.1'den 18.0'a bir güncellemeden sonra Ubuntu 16.04'te test edildi pip3.

pyenv

Nihayetinde, ciddi Python gelişimi için sadece kendi yerel Python'unuzu pyenv + virtualenv ile kurmanızı tavsiye ederim, bu da bu Ubuntu hatasını da çözer: apt-get kullanarak farklı bir Python sürümünü nasıl kurabilirim?


1
Yani bu işe yarıyor, ama burada başımı sallayan tek kişi ben olamam. Arıza nerede? Varsayılan pip yükseltme neden yeni pip'i çalışmaya devam edecek şekilde ayarlayamıyor?
Steven Lu

@StevenLu benim anlayışım /usr/bin/pipbir Ubuntu Python paketi tarafından sağlanan ve pipüzerine yazmamasıdır . Ancak, kendi başına pip updateyönetilir pipve Ubuntu dosyalarına dokunmaktan kaçınır.
Ciro Santilli

Merhaba ho aynı deneyim burada. Pip3 ne yaptığım önemli değil. Bu çözüm işe yarıyor, ama nasıl oluyor ?? Python pip betiği tarafından hazırlanmıştır Debian- Yorum diyor: 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. Belki de Python'u bir python şekilde doğru şekilde kurmanın bir yolu vardır.
will

@ bu belge yorumu hakkında emin değilim, ama eminim kod ne /usr/bin/pip
işe yarar

20

Hata 10.0.0 pipinde bulunur.

Linux'ta şu dosyayı değiştirmeniz gerekir: / usr / bin / pip:

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

buna:

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

Bu tarz bir çözüm , ekip tarafından önerilmemektedirpip .
jdk1.0

Günümü kurtardın !!
Saurabh Singh

8

Ben de aynı sorunu vardı, ama apt ve pip ile kaldırma ve yeniden yükleme benim için işe yaramadı.

Pip3 yolunu kurtarmanın kolay bir yolunu sunan başka bir çözüm gördüm:

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

Bu, pip3 sürümümü 19.0.3'ten 8.1.1'e düşürdü, ancak semptomu düzeltti.
Hawkeye Parker

6

Karel "yükleme numpy ve scipy" sorununuzu çözmüş olsa da, sisteminizdeki pip ile ilgili sorun giderilmemiştir, bu yüzden pip ilerlerken muhtemelen daha fazla sorununuz olacaktır.

Buraya bakıldığında , Ubuntu sistemlerinde pip 10 ile ilgili oldukça yaygın bir sorun gibi görünüyor. Bu iş parçacığı üzerinde sizin için çalışan bazı çalışmalar bulabilirsiniz, ancak umarım bir güncelleme yakında çözecektir.


Sorunu gerçekten çözdüğünüz için ve sorunu yalnızca kısmen ve sadece tek bir kişi için çözen bir çözüm vermediğiniz için teşekkür ederiz ...
Caleb Fenton

3

Hem apt hem de pip'in kendisinden pip kurmak buna neden olabilir.

Benim durumumda, daha sonra daha yeni bir pip kopyası yükleyen pipenv'i kurmak için Ubuntu'nun pip paketini kullandım. which pip3Kabuğum Ubuntu'nun pip 9 komut dosyasını (çalıştırmayı doğrulamak için) çalıştırdığından ve Python yorumcum pip 10 modülünü içe aktardığından pip3 komutu başarısız oluyor. Bu yüzden ikisinden birini kaldırmak istiyorum.

Bir sebepten dolayı daha yeni pip'e sahip olduğunuzu varsaymak adil. Bu durumda, eski pip'i aşağıdaki gibi kaldırmak istersiniz:

sudo apt remove python3-pip

Eski pip ile iyi çalıştığınızdan eminseniz ve sistem paketini tercih ediyorsanız, yenisini kaldırmak istersiniz:

~/.local/bin/pip3 uninstall pip

ya da başarısız

sudo /usr/local/bin/pip3 uninstall pip


1

tip

hash -d pip3

Bu işlem bu hatayı kaldırmalıdır


3
Cevabınız hakkında daha fazla açıklama yapabilir misiniz: 'karma' nedir ve neden hatayı kaldıracaktır?
Marc Vanhoomissen

1

Yeniden yükleme pipi, bu github sayfasında gösterildiği gibi çoğu kullanıcı için iyi çalışır :

python -m pip install --force-reinstall pip

teşekkür ederim. Önceki tüm cevaplar sefil bir şekilde başarısız oldu, oysa sizinki çalıştı
Pynchia

0

Benim sorunum python3.6 ve 3.7 arasında bir uyumsuzluk oldu. Sistem python3.7 /usr/bin/python3 -> /usr/bin/python3.6sürümüne yükseltilmiş olsa bile python3.6 kurulumu bir bağlantı kurdu .

sudo apt purge python-pip
sudo apt purge python3-pip
sudo apt install python3.7 --reinstall
cd /usr/bin
sudo rm python3
sudo ln -s python3.7 python3
python3 --version
pip3 --version

-1

Bu benim için çalıştı:

pip install --upgrade --user pip

By install --upgrade, ben yüklemeye çalıştığınız konum ne olursa olsun anlamına gelir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.