Masalah menggunakan zsh dengan Catalina, Python / Python3, pip / pip3, PATH, zshrc, dll


14

Saya baru saja memperbarui ke Catalina dan zsh default. Saya mungkin mengacaukan jalur selama transisi, dan saya sedang mencoba untuk memilah lokasi Python3.7, pip3, PATH baris perintah dan file zshrc saya.

Tampaknya seolah-olah ada file berpotensi berlebihan yang terdapat di / usr / bin, / usr / local / bin, / usr / local / Cellar / python dan / Users/[user[/.local/bin

Berikut ini adalah reproduksi dari perintah:

$ which python3
/usr/bin/python3
$ which python
/usr/bin/python
$ which pip
pip not found
$ which pip3
/usr/bin/pip3
$ pip3 -V
Traceback (most recent call last):
  File "/Library/Developer/CommandLineTools/usr/bin/pip3", line 10, in <module>
    sys.exit(main())
TypeError: 'module' object is not callable
$ cat ~/.zshrc
export PATH=$PATH:/usr/local/bin:/usr/bin
$ echo $PATH
/Users/[user]/.local/bin:/bin:/usr/bin:/usr/local/bin:/Users/[user]/anaconda3/bin:/Users/[user]/anaconda3/bin:/Users/[user]/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/[user]/anaconda3:/Library/TeX/texbin:/usr/local/share/dotnet:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Xamarin Workbooks.app/Contents/SharedSupport/path-bin:/usr/local/bin:/usr/bin:/usr/local/bin:/usr/bin

Adakah yang bisa membantu saya memecahkan masalah semua ini? Dari apa yang saya mengerti: Saya hanya perlu Python2.x untuk OS; dengan Catalina, sekarang saya harus menyimpan Python3.x hanya di dalam Pengguna saya (bukan di / usr)? pip3 terinstal secara otomatis dengan Python3.x (meskipun saya mengembalikan kesalahan) dan juga harus diinstal dalam Pengguna saya dan tidak di / usr? Juga, $ PATH saya masih mengandung sisa-sisa, misalnya, Anaconda, yang sejak itu saya hapus ... bagaimana / di mana saya memperbarui $ PATH saya? Di dalam file zshrc?


Tampaknya terlepas dari pengeditan (misalnya, saya menghapus anaconda dari file / etc / paths saya karena saya tidak lagi menggunakannya), yang python dan yang menunjuk python3 ke / usr / bin bukan lokasi lain.
OJT

1
which -aakan menampilkan semua jalur yang mungkin cocok, sesuai urutannya PATH. Informasi itu mungkin terbukti bermanfaat.
chepner

Saya mengalami masalah yang sama setelah memperbarui pipmenggunakan sudo pip3 install ---upgrade pipCatalina. Namun, menggunakan python3 -m pipsitll works. Anda bisa menggunakan ini sebagai solusinya.
Jonas Drotleff

Jawaban:


8

Saya mengalami masalah ini setelah instalasi Catalina yang bersih. Saya juga menggunakan zsh.

Apa yang saya lakukan salah:

Saya telah menginstal versi baru pipdengan menggunakan:

sudo pip3 install --upgrade pip

seperti yang diminta. Namun, ini tidak akan berfungsi dengan Apple python, karena jalurnya tidak akan benar. Sebagai gantinya, sudo -Hharus digunakan.

Bagaimana saya memperbaiki pip:

Untungnya, python3 -m pipmasih berfungsi sebagai solusi untuk pip3.

Instal versi yang lebih lama pip(dalam kasus saya, 19.3.0sudah cukup):

sudo -H python3 -m pip install --upgrade pip==19.3.0

dan kemudian tingkatkan lagi:

sudo -H python3 -m pip install --upgrade pip

Saya harap ini juga akan menyelesaikan masalah Anda.


0

Saya memiliki masalah yang sama seperti Anda. Dipecahkan dengan

brew install python3

1
Pengaturan dan kesalahan yang sama persis dengan OP, tidak diselesaikan dengan ini.
Melka

0

Saya memecahkan masalah ini dengan menghapus ~ / Library / Python.


Harap setiap kali Anda menjawab pertanyaan atau menambahkan komentar, pastikan bahwa itu dalam format yang dapat dimengerti oleh orang lain dan masuk akal, jika pengguna baru masuk.
ashwin agrawal

0

Saya juga menjalankan masalah ini pada instalasi baru MacOS Catalina dengan istilah Kitty emulator + ohmyzsh.

Membaca pertanyaan ini membawa saya ke saya .zshrcyang masih memiliki garis komentar

\#export PATH=$HOME/bin:/usr/local/bin:$PATH

Saya menghapus komentar, yang menambahkan $ HOME / bin ke PATH

~/.zshrc

export PATH=$HOME/bin:/usr/local/bin:$PATH

Perubahan ini memungkinkan saya untuk berhasil menjalankan pip3perintah tanpa kesalahan traceback.


0

Saya punya masalah serupa. Kamu bisa menggunakan

rehash

di baris perintah Anda untuk memperbarui jalur Anda. Itu memecahkan masalah bagi saya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.