Kesalahan setelah memutakhirkan pip: tidak dapat mengimpor nama 'utama'

467

Setiap kali saya mencoba untuk menginstal paket apa pun menggunakan pip, saya mendapatkan kesalahan impor ini:

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())

Ini berfungsi dengan baik sebelumnya, saya tidak yakin mengapa ini melempar kesalahan ini. Saya telah mencari tentang kesalahan ini, tetapi tidak dapat menemukan apa pun untuk memperbaikinya.

Harap beri tahu saya jika Anda membutuhkan detail lebih lanjut, saya akan memperbarui pertanyaan saya.

g_p
sumber
1
Diskusi tambahan di tautan ini .
Diagon
7
Saya memiliki masalah yang sama karena saya biasa pip install --upgrade pipmemutakhirkan pip pada server di mana saya tidak memiliki hak admin. Menghapus instalan pip dengan python -m pip uninstall pipmemecahkan masalah saya.
Isi
Jawabannya tidak membantu saya. Ini adalah masalah saya: github.com/pypa/pipenv/issues/2095
Étienne

Jawaban:

846

Anda harus secara tidak sengaja meningkatkan sistem pip Anda (mungkin melalui sesuatu seperti sudo pip install pip --upgrade)

pip 10.x menyesuaikan di mana internalnya berada. Itupip3 perintah Anda sedang melihat adalah salah satu yang disediakan oleh pengelola paket Anda (mungkin Debian berbasis di sini?) Dan bukan file dikelola oleh pip.

Anda dapat membaca lebih lanjut tentang ini di pelacak masalah pip

Anda mungkin akan ingin tidak meningkatkan pip sistem Anda dan sebaliknya menggunakan virtualenv.

Untuk memulihkan pip3biner, Anda harus melakukannyasudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall .

Jika Anda ingin melanjutkan di "wilayah yang tidak didukung" (memutakhirkan paket sistem di luar manajer paket sistem), Anda mungkin bisa pergi python3 -m pip ...daripada pip3.

Anthony Sottile
sumber
28
sudo apt install python3-pip --reinstalltidak memperbaiki masalah, namun saya dapat menginstal paket menggunakan python3 -m pip. Terima kasih atas bantuan Anda. Saya menandainya sebagai diterima.
g_p
2
@g_p memperbarui petunjuk arah "fixup" - cukup verifikasi di docker (saya harus melakukan itu pertama kali!)
Anthony Sottile
6
Saya ingin menggunakan perintah 'python -m pip uninstall pip' sebagai 'sudo pip uninstall pip' memberikan kesalahan yang sama dengan pertanyaan awal
Mz A
41
Terima kasih! Itu membantu! Gunakan sudo python -m pip uninstall pip && sudo apt install python-pip --reinstalluntuk python2!
Barmaley
1
Bekerja untuk Ubuntu di Windows. Solusinya adalah apa yang disarankan @Barmaley untuk python2 (penerjemah python default).
jdhao
111

Kami dapat menghapus kesalahan dengan memodifikasi file pip.

Periksa lokasi file:

$ which pip

path -> / usr / bin / pip

Pergi ke lokasi itu ( / usr / bin / pip ) dan buka terminal

Memasukkan: $ sudo nano pip

Anda bisa melihat:

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

Mengubah:

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

lalu ctrl + o tulis perubahan dan keluar

Semoga ini bisa dilakukan !!

vijay athithya
sumber
1
Membuat perubahan ini tidak memperbaiki masalah, tetapi mengubahnya kembali ke teks aslinya. ¯_ (ツ) _ / ¯
David
2
Saya mencoba ini, tetapi mendapatAttributeError: module 'pip.__main__' has no attribute 'main'
dnnagy
4
Pastikan Anda menulis _main () bukan main ()
vijay athithya
2
dalam versi terbaru pip3, main()pindah ke pip._internal. Pernyataan impor harus diubah menjadifrom pip._internal import main
Yossarian42
2
Bekerja seperti pesona! Terima kasih
mahesh nanayakkara
69

Untuk keluarga Ubuntu, pengguna Debian, Linux Mint

Berkat penjelasan Anthony di atas , Anda dapat mempertahankan pip sistem asli Anda (di / usr / bin / dan dist-paket /) dan menghapus pip yang diinstal secara manual (di ~ / .local /) untuk menyelesaikan konflik:

$ python3 -m pip uninstall pip

Ubuntu / Debian pip v8.1.1 (16.04) dari python3-pippaket debian (lihat $ pip3 -V) menunjukkan hasil pencarian yang sama dengan pip terbaru v10.0.1, dan menginstal modul-modul terbaru dari PyPI. Ini memiliki pipperintah yang berfungsi (sudah dalam $ PATH), ditambah --useropsi bagus ditambal secara default sejak 2016. Melihat catatan rilis pip , versi yang lebih baru kebanyakan tentang perbaikan bug khusus kasus penggunaan dan fitur baru tertentu, jadi tidak setiap orang harus buru-buru memperbarui pip dulu. Dan pip 10 yang baru dapat digunakan untuk virtualenvs Python.

Tetapi terlepas dari pips, OS Anda memungkinkan untuk menginstal modul Python umum dengan cepat (termasuk numpy) dengan APT, tanpa perlu pip, misalnya:
$ sudo apt install python3-numpy python3-scipy(dengan dependensi sistem)
$ sudo apt install python3-pip(pip yang ditambal Debian, sedikit lebih tua tetapi tidak masalah)

Pengingat sintaks yang tepat (lihat man aptdetailnya):
$ sudo apt update(untuk menyelaraskan kembali file indeks paket Ubuntu dari sumber terbaru)
$ apt search <python-package-name> (pencarian teks lengkap pada semua paket yang tersedia)
$ apt show <python-package-name>(menampilkan deskripsi paket terperinci)
$ sudo apt install <python-package-name>

Nama paket yang diawali dengan python-adalah untuk Python 2; dan diawali dengan python3-adalah untuk Python 3 (misalnya python3-panda). Ada ribuan, dan mereka menjalani pengujian integrasi dalam Debian dan Ubuntu. Kecuali jika Anda ingin menginstal di tingkat per-pengguna ( pip install --useropsi) atau dalam virtualenv / venv, apt bisa menjadi apa yang Anda butuhkan. Paket-paket sistem ini juga dapat diakses dari virtual envs, karena virtualenv dengan anggun akan kembali menggunakan lib sistem saat impor jika Anda tidak memberikan salinan modul. --userModul per pengguna yang diinstal khusus (dengan pip ) ~/.local/libakan menggantikannya juga.

Catatan, karena ini adalah pemasangan di seluruh sistem , Anda jarang perlu menghapusnya (harus memperhatikan dependensi OS). Ini cocok untuk paket dengan banyak ketergantungan sistem (seperti dengan scipy atau matplotlib), karena APT akan melacak dan menyediakan semua lib sistem dan ekstensi C yang diperlukan, sementara dengan pip Anda tidak memiliki jaminan seperti itu .

Bahkan, untuk paket Python seluruh sistem (berbeda dengan per-pengguna, tingkat dir rumah, atau lebih rendah), Ubuntu mengharapkan menggunakan manajer paket APT (daripada sudo pip) untuk menghindari melanggar OS: sudo pip3menargetkan /usr/lib/python3/dist-packagesdirektori yang sama di mana APT menyimpan OS Modul-sensitif. Rilis terbaru Debian / Ubuntu sangat bergantung pada Python 3, sehingga modul pra-instalnya dikelola oleh aptdan tidak boleh diubah.

Jadi jika Anda menggunakan pip3 installperintah, pastikan ia berjalan di lingkungan dev virtual yang terisolasi, seperti dengan virtualenv ( sudo apt install python3-virtualenv), atau dengan Python3 built-in ( -m venv), atau pada tingkat per pengguna ( --useropsi pip, default di Ubuntu yang disediakan pip sejak 2016), tetapi tidak untuk seluruh sistem (tidak pernah sudo pip3!), karena pip mengganggu operasi manajer paket APT dan dapat memengaruhi komponen OS Ubuntu ketika modul python yang digunakan sistem secara tak terduga berubah. Semoga berhasil!


P. S. Semua di atas adalah untuk solusi 'ideal' (cara Debian / Ubuntu).

Jika kamu masih ingin menggunakan pip3 v10 baru secara eksklusif, ada 3 solusi cepat:

  • cukup buka sesi bash baru (tab terminal baru, atau ketik bash) - dan pip3 v10 tersedia (lihat pip3 -V). pip3 v8 debian tetap terpasang tetapi rusak; atau
  • perintah $ hash -d pip3 && pip3 -V untuk me-refresh path3 pathname di $ PATH. pip3 v8 debian tetap terpasang tetapi rusak; atau
  • perintah $ sudo apt remove python3-pip && hash -d pip3untuk menghapus sepenuhnya pipian v8 debian, mendukung pip3 v10 baru Anda.

Catatan: Anda akan selalu perlu menambahkan --userflag ke pip yang disediakan non-debian, kecuali Anda berada di virtualenv! (Ini menyebarkan paket python ke ~/.local/, default di debian / ubuntu-disediakan python3-pip dan python-pip sejak 2016). Penggunaan pip 10 di seluruh sistem, di luar virtualenv, tidak benar-benar didukung oleh Ubuntu / Debian. Tidak pernah sudo pip3!

Rincian lebih lanjut:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100

Alex C.
sumber
Dapatkah Anda membantu saya memahami mengapa menginstal versi pip lokal yang ditingkatkan dengan --user, yaitu tanpa sudo, memengaruhi kemampuan saya untuk menjalankan apt yang diinstal pip? Saya pikir keduanya akan hidup berdampingan. Tetapi karena intisari ini menunjukkan apt yang dipasang, akan rusak setelah saya melakukannya python3 -m pip install --user --upgrade pip. Saya tidak mencari solusi - Saya benar-benar ingin tahu apa yang terjadi di sini.
George Hawkins
1
@ George Ini terjadi karena ketidakcocokan antara perpustakaan pip dan pembungkusnya yang mengimpornya. Mencoba menjalankan perintah pip sistem segera (tanpa menerapkan solusi apa pun ) masih akan memanggil versi sistem apt-install dari skrip pip wrapper /usr/bin/pip3daripada yang diinstal sebagai --user( ~/.local/bin/pip*) menurut sistem OS $ PATH yang masih diatur untuk menjalankan versi sistem pembungkus, tetapi tidak perpustakaannya ..
Alex C.
2
@ George Ini karena sekarang ada paket pip baru yang diinstal ~/.local/lib/python3.?/site-packages/pipyang memiliki prioritas di atas sistem dibandingkan dengan impor Python relatif (situs pengguna-lokal mengambil prioritas di atas lib global). Dan karena pembungkus yang lebih tua mencoba from pip import maindaripada from pip._internalatau __main__kelasnya terhadap versi yang lebih baru dari paket pip, perintah pip dari inti gagal ImportError: cannot import name 'main'. Jadi kedua pips dapat hidup berdampingan (pada disk) tetapi fungsi dari sistem yang asli akan "rusak" ..
Alex C.
+1 untuk --user. pip install --useradalah apa yang dilakukan untukku. (Saya punya python 2.7, python 3.6, dan python 3.7, semua terinstal di Ubuntu 18.04 LTS.)
Stephen G Tuggy
46

diselesaikan dalam satu langkah saja.

Saya juga menghadapi masalah ini, Tapi ini bisa diselesaikan hanya dengan 1 perintah tanpa repot-repot dan membuang-buang waktu dan saya telah mencobanya pada banyak sistem itu solusi paling bersih untuk masalah ini. Dan itu:

Untuk python3: - sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.

Dengan ini, Anda cukup menginstal paket menggunakan pip3. untuk memeriksa penggunaan pip3 --version.

Untuk versi lama, gunakan: sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall.

Dengan ini, sekarang Anda cukup menginstal paket menggunakan pip. untuk memeriksa penggunaan pip --version.

Saket
sumber
31

Gunakan python -m pip installsebagai gantipip install

Contoh:

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

The pip(resp. pip3) Executable disediakan oleh distro Anda ( python-pippaket pada Ubuntu 16.04) dan terletak di /usr/bin/pip.

Oleh karena itu, ini tidak selalu diperbarui dengan pippaket itu sendiri saat Anda meningkatkan pip, dan mungkin rusak.

Jika Anda hanya menggunakan python -m pipsecara langsung, misalnya di:

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

ia melewati jalur Python Anda, menemukan versi terbaru dari pip dan mengeksekusi file itu.

Itu bergantung pada fakta bahwa file dapat dieksekusi melalui import, tetapi itu adalah jenis antarmuka yang sangat standar, dan karena itu lebih kecil kemungkinannya untuk rusak daripada skrip Debian peretasan.

Maka saya sarankan menambahkan alias berikut ke .bashrc:

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

File Ubuntu 18.04 /usr/bin/pip3tidak:

from pip import main

dan mungkin maintelah dihapus dari pipbeberapa titik yang merupakan hal yang merusak.

Commit pemecah pip tampaknya: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Pindahkan semua API internal ke pip._internal" yang masuk ke pip 18.0.

Diuji di Ubuntu 16.04 setelah pembaruan dari pip39.0.1 hingga 18.0.

Pyenv

Namun pada akhirnya, untuk pengembangan Python yang serius, saya hanya akan menyarankan Anda menginstal Python lokal Anda sendiri dengan pyenv + virtualenv, yang juga akan mengatasi bug Ubuntu ini: /ubuntu/682869/how-do-i- install-a-different-python-version-using-apt-get / 1195153 # 1195153

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
sumber
3
setelah 5 jam pencarian, ini berhasil untuk saya. saya dapat mengirimkan saya bunga kepada Anda jika Anda mengirimi saya alamat Anda. Terima kasih.
cagri
18

Anda dapat mengatasi masalah ini dengan menginstal ulang pip.

Gunakan salah satu dari perintah baris perintah berikut untuk menginstal ulang 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
Pembuat kode
sumber
8

Saya sedang menjalankan sistem di mana saya memiliki sudo apt tetapi tidak ada sudo pip. (Dan tidak ada akses su.) Saya masuk ke situasi yang sama dengan mengikuti saran dari pip:

Anda menggunakan pip versi 8.1.1, namun 18.0 tersedia. Anda harus mempertimbangkan untuk meningkatkan melalui perintah 'pip install --upgrade pip'.

Tidak ada perbaikan lain yang berfungsi untuk saya, karena saya tidak memiliki cukup hak istimewa admin. Namun, ada beberapa hal yang membuat saya tidak bisa membaca ini:

  • Aku seharusnya tidak melakukan ini. Tentu, pip menyuruhku. Itu berbohong.
  • Menggunakan --user memecahkan banyak masalah dengan berfokus pada direktori hanya pengguna.

Jadi, saya menemukan baris perintah ini berfungsi untuk mengembalikan saya kembali ke tempat saya sebelumnya. Jika Anda menggunakan versi yang berbeda dari 8.1.1, Anda tentu ingin mengubah bagian dari baris tersebut.

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

Itu satu-satunya hal yang berhasil untuk saya, tetapi itu bekerja dengan sempurna!

Scott Mermelstein
sumber
7

Pulihkan dengan python3 -m pip install --user pip==9.0.1(atau versi yang berfungsi)

Claire
sumber
5

Hal yang sama terjadi pada saya di Pixelbook menggunakan LXC (strech) baru. Solusi ini sangat mirip dengan yang diterima, dengan satu perbedaan halus, yang mana memperbaiki pip3 untuk saya.

sudo python3 -m pip install --upgrade pip

Itu menabrak versi, dan sekarang berfungsi seperti yang diharapkan.

Saya menemukannya di sini ... Python.org: Pastikan pip sudah terbaru

fliptopbox
sumber
4

Saya bertemu masalah yang sama pada sistem Ubuntu 16.04 saya. Saya berhasil memperbaikinya dengan menginstal ulang pip dengan perintah berikut:

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

jkjung13
sumber
Ini memiliki manfaat bahwa Anda menginstalnya dari sumber, dan tidak ada yang di atas bekerja pada Debian 9 kosong bersih (dari penyedia server khusus saya)
Peter Rosemann
meringkuk internet ke pengguna super, apa yang bisa salah!
Sum1sAdmin
3

Perintah di atas tidak bekerja untuk saya tetapi itu sangat membantu:

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
Pierrot
sumber
2

Di ubuntu 18.04.1 Bionic Beaver, Anda harus keluar dan masuk kembali (restart tidak perlu) untuk mendapatkan lingkungan yang tepat.

$ 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 <module>
    from pip import main
ImportError: cannot import name main

$ exit
<login>

$ pip --version
pip 18.1 from /home/test/.local/lib/python2.7/site-packages/pip (python 2.7)
Jeff Hoye
sumber
1

Saya menggunakan sudo apt remove python3-pip kemudian pipbekerja.

 ~ sudo pip install pip --upgrade
[sudo] password for sen: 
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    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 <command> [options]
jim gabriel
sumber
1
Itu karena pipuntuk Python 2. OP menggunakan pip3, versi Python 3 pip, yang baru saja Anda hapus. Keduanya berbeda dan tidak dapat dipertukarkan.
Neinstein
1

Untuk solusi Python versi 2.7 @Anthony bekerja dengan sempurna, dengan mengubah python3 ke python sebagai berikut:

sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
ewalel
sumber
1

Apa yang berhasil bagi saya untuk memperbaiki kesalahan menggunakan pip3adalah:

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

Semuanya bekerja:

 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)

Mungkin versi 10.0.1 baru dari pip tidak memperbarui biner di / usr / bin? (yang sepertinya tidak)

EDIT: masalah yang sama terjadi di Ubuntu 18.04. Solusi terbaik yang saya temukan adalah symlink binary pip dari /home/<user/.local/binke /usr/local/binatau /usr/bin(tergantung pada preferensi Anda), sebagai berikut:

ln -sv /home/<user>/.local/bin/pip /usr/local/bin/pip
ln -sv /home/<user>/.local/bin/pip2 /usr/local/bin/pip2
ln -sv /home/<user>/.local/bin/pip2.7 /usr/local/bin/pip2.7
ln -sv /home/<user>/.local/bin/pip3 /usr/local/bin/pip3
ln -sv /home/<user>/.local/bin/pip3.6 /usr/local/bin/pip3.6

CATATAN: ganti <user> dengan pengguna Anda saat ini

Versi terkait (terbaru) ada di:

Versi 3.6:

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

Versi 2.7:

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

cryptoboy
sumber
Yang ini memperbaiki masalah saya. Jawaban lain tidak.
Amin Husni
1
Anda benar-benar tidak boleh main-main dengan file dalam /usr/binsekalipun. Dan, Anda PATHsalah jika /usr/local/binbukan sebelumnya /usr/bin.
tripleee
Biner pip tidak ada di /usr/local/bin. Hanya di /home/<user>/.local/bindan / atau /home/<user>/.local/lib/python<version>/site-packages/pipdi versi baru (v10.0 + tidak memperbarui biner di /usr/bin). Oleh karena itu alasan salinan atau symlink dari biner perlu dibuat di /usr/binatau /usr/local/bin(tergantung pada preferensi pengguna) sehingga pip dapat dijalankan secara global dari commandline.
cryptoboy
Direktori binary pip ada dan harus ditautkan / disalin dari: demon @ Bionic18: ~ / .local / bin $ ls pip pip2 pip2.7 pip3 pip3.6 pipDefault biner ke versi terbaru yang diinstal pada sistem
cryptoboy
0

Trik dan bekerja juga

sudo -H pip instal lxml

Tejas Tank
sumber
0

Saya memiliki kesalahan yang sama, tetapi python -m pipmasih berfungsi, jadi saya memperbaikinya dengan opsi nuklir sudo python -m pip install --upgrade pip. Itu melakukannya untuk saya.

Sergiu
sumber
0

Untuk apa nilainya, saya punya masalah dengan pip(tidak pip2atau pip3):

$ pip -V
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    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)

Entah bagaimana (saya tidak ingat bagaimana) saya memasang python di ~/.localdirektori saya . Setelah saya menghapus direktori pip dari sana, pipmulai bekerja lagi.

$ 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)
Michael Burr
sumber
0

Anda dapat mencoba ini:

sudo ln -sf $( type -P pip ) /usr/bin/pip
Sarana Vitthal
sumber
3
Meskipun kode ini dapat menjawab pertanyaan, akan lebih baik untuk memasukkan beberapa konteks, menjelaskan cara kerjanya dan kapan menggunakannya. Jawaban kode saja tidak berguna dalam jangka panjang.
Giulio Caccin
0

Saya juga mengalami masalah ini ketika saya ingin memutakhirkan sistem pip pip3dari 9.0.1 ke 19.2.3.

Setelah berjalan pip3 install --upgrade pip, pipversi menjadi 19.2.3. Tetapi main()telah dipindahkan dalam pip._internalversi terbaru, yang daunnya pip3patah.

Jadi dalam file /usr/bin/pip3, ganti line 9: from pip import maindengan from pip._internal import main. Masalah akan diperbaiki, berfungsi sama untuk python2-pip. (Diuji pada distribusi Ubuntu 18.04)

Menurut jawaban @Vincent H.

Yossarian42
sumber
0

Silakan jalankan perintah berikut untuk melakukan perbaikan. Setelah berjalan python3 -m pip install --upgrade pip, silakan jalankan perintah berikut.

hash -r pip

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

SuperNova
sumber
0

Anda cukup memperbaiki jalur pip dan pip3 menggunakan update-alternatives

Hal pertama yang Anda harus memeriksa adalah Anda saat $PATH run echo $PATHdan lihat adalah Anda dapat menemukan/usr/local/bin yang mana pip3 dan pip biasanya

ada perubahan yang dilihat sistem Anda di sini /bin/pipdan /bin/pip3 saya akan mengatakan perbaiki PATH dengan menambahkan ~/.bash_profilefile Anda agar tetap ada

export PATH=$PATH:/usr/local/bin dan kemudian periksa apakah sudah diperbaiki dengan which pipdanwhich pip3

jika tidak maka gunakan update-alternativesuntuk memperbaikinya akhirnya

update-alternatives --install /bin/pip3 pip3 /usr/local/bin/pip3 30

dan jika Anda ingin mengarahkan pip ke pip3 maka

update-alternatives --install /bin/pip pip /usr/local/bin/pip3 30
uberrebu
sumber
0

Ini Berhasil untuk saya!

hash -r pip # or hash -d pip

Sekarang, hapus instalan versi yang diinstal pip dan instal ulang menggunakan perintah berikut.

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

Jika pip rusak, gunakan:

python -m pip install --force-reinstall pip

Semoga ini bisa membantu!

Ebin Zacharias
sumber
-1

impor main dari pip._internal

from pip._internal import main

Edit kode pip dari

sudo nano /usr/bin/pip3
Akhilesh NS
sumber
Bisakah Anda mengedit jawaban dan menentukannya dengan lebih baik? Tidak begitu jelas bagaimana cara mengedit file /usr/bin/pip3...
M. Volf
-1

Seperti kata @cryptoboy - periksa versi pip / python apa yang telah Anda instal

 demon@UbuntuHP:~$ pip -V
 demon@UbuntuHP:~$ pip2 -V
 demon@UbuntuHP:~$ pip3 -V

dan kemudian periksa pustaka yang tidak diperlukan di folder .local / lib / Anda.

Saya melakukan backup pengaturan ketika saya bermigrasi ke Kubuntu yang lebih baru dan di folder .local / lib / python2.7 / di direktori home saya. Dipasang python 3.6. Saya baru saja menghapus folder lama dan sekarang semuanya berfungsi dengan baik!

Vergil333
sumber
-1

Pada Debian Anda harus memperbarui apt terlebih dahulu ....

sudo apt-get update -qq
sudo apt-get install python-pip -qq
sudo pip install pip --upgrade --quiet
sudo pip2 install virtualenv --quiet

Jika Anda melewatkan 'sudo apt-get update -qq' pip Anda akan rusak dan menampilkan kesalahan 'tidak dapat menemukan utama'.

Paul Kenjora
sumber
-1

Kesalahan ini mungkin merupakan izin. Jadi, uji eksekusi perintah dengan flag -H :

sudo -H pip3 install numpy
Mohsen Abasi
sumber
pertanyaannya sangat jelas mengatakan ImportError bukan kesalahan izin
Anthony Sottile
-1

Gunakan perintah berikut sebelum eksekusi perintah pip apa pun

hash -d pip

Itu akan berhasil

Muhammad Adil
sumber
1
Bisakah Anda mengklarifikasi bagaimana ini akan membantu / + menghapus komentar merendahkan?
peri