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.
pip install --upgrade pip
memutakhirkan pip pada server di mana saya tidak memiliki hak admin. Menghapus instalan pip denganpython -m pip uninstall pip
memecahkan masalah saya.Jawaban:
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. Itu
pip3
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
pip3
biner, 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 ...
daripadapip3
.sumber
sudo apt install python3-pip --reinstall
tidak memperbaiki masalah, namun saya dapat menginstal paket menggunakanpython3 -m pip
. Terima kasih atas bantuan Anda. Saya menandainya sebagai diterima.sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall
untuk python2!Kami dapat menghapus kesalahan dengan memodifikasi file pip.
Periksa lokasi file:
Pergi ke lokasi itu ( / usr / bin / pip ) dan buka terminal
Memasukkan:
$ sudo nano pip
Anda bisa melihat:
Mengubah:
lalu ctrl + o tulis perubahan dan keluar
Semoga ini bisa dilakukan !!
sumber
AttributeError: module 'pip.__main__' has no attribute 'main'
pip3
,main()
pindah kepip._internal
. Pernyataan impor harus diubah menjadifrom pip._internal import main
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-pip
paket debian (lihat$ pip3 -V
) menunjukkan hasil pencarian yang sama dengan pip terbaru v10.0.1, dan menginstal modul-modul terbaru dari PyPI. Ini memilikipip
perintah yang berfungsi (sudah dalam $ PATH), ditambah--user
opsi 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)Nama paket yang diawali dengan
python-
adalah untuk Python 2; dan diawali denganpython3-
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 --user
opsi) 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.--user
Modul per pengguna yang diinstal khusus (dengan pip )~/.local/lib
akan 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 pip3
menargetkan/usr/lib/python3/dist-packages
direktori yang sama di mana APT menyimpan OS Modul-sensitif. Rilis terbaru Debian / Ubuntu sangat bergantung pada Python 3, sehingga modul pra-instalnya dikelola olehapt
dan tidak boleh diubah.Jadi jika Anda menggunakan
pip3 install
perintah, 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 (--user
opsi pip, default di Ubuntu yang disediakan pip sejak 2016), tetapi tidak untuk seluruh sistem (tidak pernahsudo 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:
bash
) - dan pip3 v10 tersedia (lihatpip3 -V
). pip3 v8 debian tetap terpasang tetapi rusak; atau$ hash -d pip3 && pip3 -V
untuk me-refresh path3 pathname di $ PATH. pip3 v8 debian tetap terpasang tetapi rusak; atau$ sudo apt remove python3-pip && hash -d pip3
untuk menghapus sepenuhnya pipian v8 debian, mendukung pip3 v10 baru Anda.Catatan: Anda akan selalu perlu menambahkan
--user
flag 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 pernahsudo pip3
!Rincian lebih lanjut:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100
sumber
pip
lokal yang ditingkatkan dengan--user
, yaitu tanpasudo
, memengaruhi kemampuan saya untuk menjalankan apt yang diinstalpip
? Saya pikir keduanya akan hidup berdampingan. Tetapi karena intisari ini menunjukkan apt yang dipasang, akan rusak setelah saya melakukannyapython3 -m pip install --user --upgrade pip
. Saya tidak mencari solusi - Saya benar-benar ingin tahu apa yang terjadi di sini./usr/bin/pip3
daripada yang diinstal sebagai--user
(~/.local/bin/pip*
) menurut sistem OS $ PATH yang masih diatur untuk menjalankan versi sistem pembungkus, tetapi tidak perpustakaannya ..~/.local/lib/python3.?/site-packages/pip
yang 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 mencobafrom pip import main
daripadafrom pip._internal
atau__main__
kelasnya terhadap versi yang lebih baru dari paket pip, perintah pip dari inti gagalImportError: cannot import name 'main'
. Jadi kedua pips dapat hidup berdampingan (pada disk) tetapi fungsi dari sistem yang asli akan "rusak" ..--user
.pip install --user
adalah apa yang dilakukan untukku. (Saya punya python 2.7, python 3.6, dan python 3.7, semua terinstal di Ubuntu 18.04 LTS.)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 penggunaanpip3 --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 penggunaanpip --version
.sumber
Gunakan
python -m pip install
sebagai gantipip install
Contoh:
The
pip
(resp.pip3
) Executable disediakan oleh distro Anda (python-pip
paket pada Ubuntu 16.04) dan terletak di/usr/bin/pip
.Oleh karena itu, ini tidak selalu diperbarui dengan
pip
paket itu sendiri saat Anda meningkatkan pip, dan mungkin rusak.Jika Anda hanya menggunakan
python -m pip
secara langsung, misalnya di: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
:File Ubuntu 18.04
/usr/bin/pip3
tidak:dan mungkin
main
telah dihapus daripip
beberapa 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
pip3
9.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
sumber
Anda dapat mengatasi masalah ini dengan menginstal ulang pip.
Gunakan salah satu dari perintah baris perintah berikut untuk menginstal ulang pip:
Python2:
Python3:
sumber
Periksa apakah pip telah di-cache di jalur lain, untuk melakukannya, panggil $ pip yang mana dan periksa apakah jalurnya berbeda dari yang diminta dalam kesalahan, jika itu yang dijalankan:
Ketika cache jelas, pip akan berfungsi kembali. referensi: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory
sumber
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:
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:
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.
Itu satu-satunya hal yang berhasil untuk saya, tetapi itu bekerja dengan sempurna!
sumber
Pulihkan dengan
python3 -m pip install --user pip==9.0.1
(atau versi yang berfungsi)sumber
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.
Itu menabrak versi, dan sekarang berfungsi seperti yang diharapkan.
Saya menemukannya di sini ... Python.org: Pastikan pip sudah terbaru
sumber
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
sumber
Perintah di atas tidak bekerja untuk saya tetapi itu sangat membantu:
sumber
Di ubuntu 18.04.1 Bionic Beaver, Anda harus keluar dan masuk kembali (restart tidak perlu) untuk mendapatkan lingkungan yang tepat.
sumber
Saya menggunakan
sudo apt remove python3-pip
kemudianpip
bekerja.sumber
pip
untuk Python 2. OP menggunakanpip3
, versi Python 3pip
, yang baru saja Anda hapus. Keduanya berbeda dan tidak dapat dipertukarkan.Untuk solusi Python versi 2.7 @Anthony bekerja dengan sempurna, dengan mengubah python3 ke python sebagai berikut:
sumber
Apa yang berhasil bagi saya untuk memperbaiki kesalahan menggunakan
pip3
adalah:sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3
Semuanya bekerja:
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/bin
ke/usr/local/bin
atau/usr/bin
(tergantung pada preferensi Anda), sebagai berikut:CATATAN: ganti
<user>
dengan pengguna Anda saat iniVersi 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)
sumber
/usr/bin
sekalipun. Dan, AndaPATH
salah jika/usr/local/bin
bukan sebelumnya/usr/bin
./usr/local/bin
. Hanya di/home/<user>/.local/bin
dan / atau/home/<user>/.local/lib/python<version>/site-packages/pip
di versi baru (v10.0 + tidak memperbarui biner di/usr/bin
). Oleh karena itu alasan salinan atau symlink dari biner perlu dibuat di/usr/bin
atau/usr/local/bin
(tergantung pada preferensi pengguna) sehingga pip dapat dijalankan secara global dari commandline.pip
Default biner ke versi terbaru yang diinstal pada sistemTrik dan bekerja juga
sumber
Saya memiliki kesalahan yang sama, tetapi
python -m pip
masih berfungsi, jadi saya memperbaikinya dengan opsi nuklirsudo python -m pip install --upgrade pip
. Itu melakukannya untuk saya.sumber
Untuk apa nilainya, saya punya masalah dengan
pip
(tidakpip2
ataupip3
):Entah bagaimana (saya tidak ingat bagaimana) saya memasang python di
~/.local
direktori saya . Setelah saya menghapus direktori pip dari sana,pip
mulai bekerja lagi.sumber
Apakah ada yang salah dengan paket, ketika menghasilkan de file / usr / bin / pip, Anda harus mengubah impor:
untuk
Itu memecahkan masalah, saya tidak yakin mengapa itu dihasilkan, tetapi ia mengatakan sesuatu dalam masalah berikut:
Setelah pemutakhiran pip 10 di pyenv "ImportError: tidak dapat mengimpor nama 'utama'"
sumber
Anda dapat mencoba ini:
sumber
Saya juga mengalami masalah ini ketika saya ingin memutakhirkan sistem
pip
pip3
dari 9.0.1 ke 19.2.3.Setelah berjalan
pip3 install --upgrade pip
,pip
versi menjadi 19.2.3. Tetapimain()
telah dipindahkan dalampip._internal
versi terbaru, yang daunnyapip3
patah.Jadi dalam file
/usr/bin/pip3
, gantiline 9
:from pip import main
denganfrom pip._internal import main
. Masalah akan diperbaiki, berfungsi sama untukpython2-pip
. (Diuji pada distribusi Ubuntu 18.04)Menurut jawaban @Vincent H.
sumber
Silakan jalankan perintah berikut untuk melakukan perbaikan. Setelah berjalan
python3 -m pip install --upgrade pip
, silakan jalankan perintah berikut.Sumber: https://github.com/pypa/pip/issues/5221
sumber
Anda cukup memperbaiki jalur pip dan pip3 menggunakan
update-alternatives
Hal pertama yang Anda harus memeriksa adalah Anda saat
$PATH
runecho $PATH
dan lihat adalah Anda dapat menemukan/usr/local/bin
yang mana pip3 dan pip biasanyaada perubahan yang dilihat sistem Anda di sini
/bin/pip
dan/bin/pip3
saya akan mengatakan perbaiki PATH dengan menambahkan~/.bash_profile
file Anda agar tetap adaexport PATH=$PATH:/usr/local/bin
dan kemudian periksa apakah sudah diperbaiki denganwhich pip
danwhich pip3
jika tidak maka gunakan
update-alternatives
untuk memperbaikinya akhirnyadan jika Anda ingin mengarahkan pip ke pip3 maka
sumber
Ini Berhasil untuk saya!
Sekarang, hapus instalan versi yang diinstal pip dan instal ulang menggunakan perintah berikut.
Jika pip rusak, gunakan:
Semoga ini bisa membantu!
sumber
impor main dari pip._internal
Edit kode pip dari
sumber
/usr/bin/pip3
...Seperti kata @cryptoboy - periksa versi pip / python apa yang telah Anda instal
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!
sumber
Pada Debian Anda harus memperbarui apt terlebih dahulu ....
Jika Anda melewatkan 'sudo apt-get update -qq' pip Anda akan rusak dan menampilkan kesalahan 'tidak dapat menemukan utama'.
sumber
Kesalahan ini mungkin merupakan izin. Jadi, uji eksekusi perintah dengan flag -H :
sumber
Gunakan perintah berikut sebelum eksekusi perintah pip apa pun
Itu akan berhasil
sumber