ImportError: tidak dapat mengimpor nama utama saat menjalankan perintah pip --version di windows7 32 bit

144

Saya telah menginstal python terbaru (2.7.9) yang dibundel dengan pip dan setuptools untuk windows 32-bit. Saya sudah mencoba menginstal ulang pip tetapi masalahnya tetap ada.

Inilah kesalahan setelah menjalankan pip --versiondi cmd Administrator:

Traceback (most recent call last):
 File "D:\Python\lib\runpy.py", line 162, in _run_module_as_main
  "__main__", fname, loader, pkg_name)
 File "D:\Python\lib\runpy.py", line 72, in _run_code 
  exec code in run_globals
 File "D:\Python\Scripts\pip.exe\__main__.py", line 5, in <module>
ImportError: cannot import name main
Woootiness
sumber
1
Ini mungkin terkait dengan izin file ada masalah dengan python 3.4 di sini yang diselesaikan, perlu diperiksa.
Kobi K
Saya melakukan solusi menggunakan perintah icacls tetapi kesalahan tetap ada.
Woootiness
2
"easy_install -U pip" jawab berikan di stackoverflow.com/questions/28031277/… unpack-url
J1MF0X

Jawaban:

172

Meskipun pertanyaan awal tampaknya berasal dari tahun 2015, 'bug' ini tampaknya memengaruhi penginstalan pengguna pip-10.0.0juga.

Solusinya bukan untuk memodifikasi pip, namun untuk mengubah cara pip dipanggil. Alih-alih memanggil /usr/bin/pippanggilan pipmelalui Python itu sendiri. Misalnya, alih-alih yang di bawah ini:

pip install <package>

Jika dari Python versi 2 (atau biner Python standar disebut python) lakukan:

python -m pip install <package>

atau jika dari Python versi 3:

python3 -m pip install <package> 
Wan Bachtiar
sumber
ya, saya tidak ingat apa yang saya lakukan untuk memperbaikinya, tetapi saya tetap membuka ini untuk orang lain.
Woootiness
Ketika saya menggunakan perintah yang diberikan, saya mendapat kesalahan izin (yang saya juga dapatkan setelah mengubah pip sesuai dengan jawaban catalinpopescu). Namun, untuk mengunduh paket untuk ruang lingkup pengguna (sehingga Anda tidak memerlukan hak administrasi) gunakan: python3 -m pip install <package> --user (berfungsi untuk python3, juga harus berfungsi untuk python2 walaupun tidak diuji)
randmin
Membantu saya di Mac.
charles ross
Jawaban yang lebih baik. Memodifikasi kode sumber adalah rawa.
ozgur
Ini cara yang sangat baik untuk dilakukan. Ini juga membuatnya sangat mudah untuk mendapatkan jaminan Anda menggunakan versi yang tepat:python2 -m pip install $package
JamesTheAwesomeDude
256

Bug ditemukan di pip 10.0.0.

Di linux Anda perlu memodifikasi file: / usr / bin / pip dari:

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

untuk ini:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())
catalinpopescu
sumber
1
Sepertinya ini solusinya. Saya mencoba ini dan tidak ada masalah sejauh ini.
Khue
2
Saya menggunakan pip 10.0.1 dan bug masih ada. Solusi Anda membantu. Terima kasih! Sudahkah Anda melaporkan bug ini dan solusinya kembali ke pengembang?
Alexey Subach
7
Meskipun solusi ini berhasil, tolong jangan modifikasi pipsendiri. Lihat solusi bersih di bawah ini untuk menelepon pipdari Python.
Wan Bachtiar
1
Tidak membantu pada "pip 10.0.1". pip --version pip 10.0.1 from /home/x/.local/lib/python2.7/site-packages/pip (python 2.7) penggunaan: sudo pip install tensorflow keluaran:Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main
user_x
3
@creepy_driver, memodifikasi secara manual paket yang diinstal agar sesuai dengan lingkungan tidak dianjurkan karena lain kali Anda memperbarui ke versi lain, yaitu 10.0.3 Anda akan menghadapi masalah yang sama. Solusi menjalankan pipmelalui Python yang terinstal akan mengarahkan pip untuk menggunakan lingkungan yang sesuai dengan benar.
Wan Bachtiar
60

Di Ubuntu Server 16, saya memiliki masalah yang sama dengan python27. Coba ini:

Perubahan

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

Untuk

from pip._internal import main
if __name__ == '__main__':
    sys.exit(main())
Shuai Liu
sumber
1
Bekerja di ubuntu 16.04
Sameera Kumarasingha
Ini bukan ide yang bagus. Seperti disebutkan dalam jawaban lain oleh @RichardElkins: "Orang-orang seharusnya tidak membuang waktu mengedit file yang diinstal tidak dimaksudkan untuk dimodifikasi setelah instalasi"
juergi
20

Pada Windows 10, saya menggunakan perintah berikut untuk menurunkan pip:

python -m pip uninstall pip
python -m pip install pip==9.0.3

Ini juga harus bekerja di Linux dan Mac.

kiyah
sumber
1
Seharusnya python -m pip instal pip == 9.0.3
elelias
@elelias Oh, aku tidak menyadarinya. terima kasih sudah memberitahuku!
kiyah
1
Saya harus melakukannya python easy_install.py pip==9.0.3karena setelah baris pertama, pip tidak ditemukan.
Suzanne
3
Bekerja di Linux dan Mac juga. Ini merupakan penyelesaian sampai pip / pip3 10 diperbaiki. Orang-orang seharusnya tidak membuang waktu mengedit file yang diinstal tidak dimaksudkan untuk dimodifikasi setelah instalasi ..
Richard Elkins
Saya memiliki masalah jalur setelah peningkatan, saya melakukan yang berikut untuk membuatnya berfungsi. sudo python -m pip uninstall pip && sudo untuk instal python-pip --reinstall
webjockey
10

Saya memiliki masalah yang sama, tetapi menghapus dan menginstal ulang dengan apt dan pip tidak bekerja untuk saya.

Saya melihat solusi lain yang menghadirkan cara mudah untuk memulihkan jalur pip3:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall
Hamza Ali
sumber
1
Saya punya python 2.7, jadi saya harus mengubah perintah untuk mencocokkan python 2.7 sudo python -m pip uninstall pip && sudo untuk menginstal python-pip --reinstall
webjockey
berfungsi dengan baik di ubuntu tapi saya pikir itu tidak akan berfungsi di windows
zaki benz
8

saya memperbaiki masalah dengan menginstal ulang pip menggunakan get-pip.py.

  1. Unduh get-pip dari tautan resmi: https://pip.pypa.io/en/stable/installing/#upgrading-pip
  2. menjalankannya menggunakan commande: python get-pip.py.

Dan pip sudah diperbaiki dan bekerja dengan sempurna.

Bachir Mehemmel
sumber
1
Ubah python get-pip-pymenjadi pythonget-pip.py
YourFriend
1
Bekerja dengan sempurna! Terima kasih.
Shambo
Bekerja untuk saya juga. Terima kasih
Abhishek Kishore
2

Pada MacOS jika Anda menginstal python melalui Homebrew, ubah baris /usr/local/opt/python/libexec/bin/pip

dari

from pip.internal import main

untuk

from pip._internal import main

Atau gunakan liner yang satu ini: sed -i '' "s/from pip import main/from pip._internal import main/" /usr/local/opt/python/libexec/bin/pip

Penjelasan:

Masalah ini disebabkan oleh perubahan dalam pip versi 10 yang memindahkan namespace internal di bawah main._internaldan skrip bin ditempatkan oleh homebrew masih mencari dari tempat lama (di mana dulu di versi 9). Masalah dan beberapa diskusi https://github.com/pypa/pip/issues/5240

Madis Nõmme
sumber
1

Jika Anda memiliki hardlink untuk di-pip di Anda PATH(yaitu jika Anda memiliki beberapa versi python diinstal) dan kemudian Anda meningkatkan pip, Anda juga mungkin mengalami kesalahan ini.

Solusinya terdiri dari membuat hardlink lagi. Atau bahkan lebih baik, berhenti menggunakan hardlink dan gunakan softlink.

Martín De la Fuente
sumber
1
bagaimana cara memperbaikinya?
user_x
1

Pada Windows 10, saya memiliki masalah yang sama. PIP 19sudah diinstal di sistem saya tetapi tidak muncul. Kesalahannya adalah No Module Found.

python -m pip uninstall pip
python -m pip install pip==9.0.3

Menurunkan pipversi ke 9.0.3 bekerja dengan baik untuk saya.

Debu Shinobi
sumber
0

Bagi mereka yang memiliki masalah serupa menggunakan pip 10 dengan PyCharm, unduh versi terbaru di sini

Jacob Geryk
sumber
0

Ini bekerja di ubuntu 16.04. Langkah 1:

 sudo gedit /home/user_name/.local/bin/pip

file dibuka dengan konten:

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

Ubah mainto __main__seperti yang terlihat di bawah:

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import __main__

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(__main__._main())

Simpan file dan tutup. Dan Anda selesai!

Anas Musah
sumber
0

coba ini

#!/usr/bin/python
# 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.i
try:
    from pip import main
except ImportError:
    from pip._internal import main
if __name__ == '__main__':
    sys.exit(main())
Abdul Gaffar
sumber
0

Solusi sederhana yang bekerja dengan Ubuntu, tetapi dapat memperbaiki masalah di windows juga:

Panggil saja

pip install --upgrade pip
juergi
sumber
0

Ini memecahkan masalah saya di ubuntu 18.04 ketika mencoba menggunakan python3.6:

rm -rf ~/.local/lib/python3.6

Anda dapat memindahkan folder ke tempat lain menggunakan mv alih-alih menghapusnya juga, untuk pengujian:

mv ~/.local/lib/python3.6 ./python3.6_old
RDlady
sumber
0

Buka linux terminal Anda.

hash -d pip
Carlos Muñoz
sumber
Hai Carlos, selamat datang di Stack Overflow. Untuk membantu pengguna lain yang menghadapi masalah ini, tolong tambahkan jawaban Anda untuk menjelaskan apa yang dilakukan perintah ini dan bagaimana cara memperbaiki masalah ini.
CyberJacob
0

Dalam kasus kami, pada tahun 2020 menggunakan Python3, solusi untuk masalah ini adalah memindahkan instalasi Python ke cloud-initskrip startup yang dipakai VM.

Kami telah mengalami kesalahan yang sama ketika kami mencoba menginstal Python menggunakan skrip yang dipanggil oleh pengguna kemudian dalam siklus hidup VM, tetapi memindahkan kode instalasi Python yang sama ke cloud-initskrip menghilangkan masalah ini.

CodeMed
sumber