instal pip: Silakan periksa izin dan pemilik direktori itu

155

Saat memasang pip dan python saya telah berlari ke dalam yang mengatakan:

Direktori '/ Users / Parthenon / Library / Logs / pi' atau direktori induknya tidak dimiliki oleh pengguna saat ini dan log debug telah dinonaktifkan. Silakan periksa izin dan pemilik direktori itu. Jika menjalankan pip dengan sudo, Anda mungkin menginginkan flag -H.

karena saya sekarang harus menginstal menggunakan sudo.

Saya punya python dan beberapa perpustakaan sudah diinstal pada Mac saya, saya menjalankan Yosemite. Saya baru-baru ini harus melakukan pembersihan dan instal ulang OS. Sekarang saya mendapatkan prompt ini dan saya mengalami kesulitan mencari tahu bagaimana mengubahnya

Sebelum baris perintah saya Parthenon$sekarang iniPhilips-MBP:~ Parthenon$

Saya adalah satu-satunya pemilik komputer ini dan ini adalah satu-satunya akun di atasnya. Ini tampaknya menjadi masalah ketika memutakhirkan ke python 3.4, sepertinya tidak ada di tempat yang tepat, virtualenv tidak pergi ke tempat yang saya harapkan, dll.

Phil Andrews
sumber
Apakah nama akun Anda Philip?
komaromy
Saya baru saja memperhatikan ini terjadi ketika menggunakan pip pada mesin saya sendiri kemarin, apa yang Anda maksud dengan virtualenv tidak pergi ke tempat yang Anda harapkan?
Padraic Cunningham
Saya menginstal Python 3.4 pada mesin saya, namun ketika saya menjalankan python di terminal saya masih berjalan 2.7 bahkan setelah melalui seluruh proses instalasi. Saya hanya menyebutkan virtualenv karena saya biasanya berharap menemukannya di Library / Python / 3.4 tetapi tidak ada Library / Python / 3.4
Phil Andrews
Anda perlu menggunakan sesuatu seperti python3 atau python3.4 untuk menggunakan interpreter python3, item yang dibuka kembali hanyalah pengaturan, ubuntu memiliki opsi yang sama.
Padraic Cunningham
@ PadraicCunningham apakah Anda mendapatkan masalah pip yang sama? Apakah Anda baru saja meningkatkan ke Yosemite?
Phil Andrews

Jawaban:

127

Saya juga melihat perubahan ini di Mac saya ketika saya beralih dari berlari pipke sudo pip. Menambahkan -Hke sudo menyebabkan pesan hilang untuk saya. Misalnya

sudo -H pip install foo

man sudomemberi tahu saya bahwa -Hmenyebabkan sudodiatur $HOMEke pengguna target (root dalam kasus ini).

Jadi sepertinya pip sedang mencari $HOME/Library/Logdan sudosecara default tidak diatur $HOMEke /root/. Tidak mengherankan ~/Library/Logdimiliki oleh Anda sebagai pengguna daripada root.

Saya menduga ini adalah beberapa perubahan terbaru dalam pip. Saya akan menjalankannya dengan sudo -Huntuk saat ini untuk bekerja di sekitar.

Von
sumber
18
Harap dicatat bahwa menggunakan sudo pipsama sekali tidak benar. Untuk informasi lebih lanjut silakan lihat di sini stackoverflow.com/questions/33004708/…
Mikko Ohtamaa
Saya memiliki masalah yang sama, tapi ya sekarang saya harus menginstal menggunakan flag "-H".
Malachi Bazar
62

Apa masalahnya di sini adalah bahwa Anda entah bagaimana diinstal ke dalam virtualenv menggunakan sudo. Mungkin karena kecelakaan. Ini berarti rootpengguna akan menulis ulang data paket Python, membuat semua file dimiliki oleh root dan pengguna normal Anda tidak dapat menulis file itu lagi. Biasanya virtualenv harus digunakan dan dimiliki oleh pengguna UNIX normal Anda saja.

Anda dapat memperbaiki masalah ini dengan mengubah paket izin file UNIX ke pengguna Anda. Mencoba:

$ sudo chown -R USERNAME /Users/USERNAME/Library/Logs/pip
$ sudo chown -R USERNAME /Users/USERNAME/Library/Caches/pip

maka pipharus dapat menulis file-file itu lagi.

Informasi lebih lanjut tentang manajemen izin file UNIX

Mikko Ohtamaa
sumber
Pip masih menulis dengan kesalahan. Saya juga memiliki peringatan serupa dan izin saya benar, OP sebenarnya tidak menggunakan virtualenv sehingga masuk akal bahwa menginstal paket secara global akan membutuhkan sudo.
Padraic Cunningham
1
@ PadraicCunningham: Jika pip memberikan kesalahan bahwa izin Anda salah, tunjukkan izin file Anda, sehingga kami dapat mencari tahu apa yang salah dengan mereka. Kalau tidak membantu akan menjadi pukulan dalam gelap.
Mikko Ohtamaa
Saya juga menyarankan Anda membuka pertanyaan lain karena masalah Anda mungkin berbeda dengan apa yang dimiliki penulis aslinya
Mikko Ohtamaa
Menggunakan nama pengguna saya sendiri, saya menerima kesalahan: Input: sudo chown -R USERNAME / Pengguna / USERNAME / Library / Log / pip Output: chown: / Users / USERNAME / Library / Logs / pip: Tidak ada file atau direktori seperti itu
user2755660
61

pip install --user <package name> (tidak perlu sudo) bekerja untuk saya untuk masalah yang sangat mirip.

Safwan
sumber
Anda harus memberikan setidaknya satu persyaratan untuk menginstal (lihat "pip help install")
Amir
0

Info dasar

  • sistem: mac os 18.0.0
  • pengguna saat ini: yutou

kunci

  1. tambahkan akun saat ini ke grup roda
sudo dscl . -append /Groups/wheel wheel $(whoami)
  1. ubah mode paket python ke 775.
chmod -R 775 ${this_is_your_python_package_path}

secara garis besar

  • ketika python3 dikompilasi dengan baik, informasi ini persis seperti pertanyaannya.
  • Saya mencoba menggunakan pip3 install requestsdan mendapatkan:
File "/usr/local/python3/lib/python3.6/os.py", line 220, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: 
'/usr/local/python3/lib/python3.6/site-packages/requests'
  • jadi saya cd /usr/local/python3/lib/python3.6/site-packages, lalu ls -aldan dapatkan:
drwxr-xr-x    6 root   wheel   192B  2 27 18:06 requests/

ketika saya melihat ini, saya mengerti, makedir adalah tindakan menulis, tetapi mode permintaan drwxrwxr-xhanya dipindahkan pengguna root yang dapat menulis file permintaan. Jika menambahkan yutou ( whoami) ke roda grup, dan memodifikasi paket ke roda grup dapat menulis, maka saya dapat menulis, dan masalah terpecahkan.

Bagaimana cara menambahkan yutou ke roda grup? + deteksi roda grup sudo dscl . -list /groups GroupMembership,, Anda akan menemukan:

wheel                    root

roda grup hanya satu root anggota. + tambahkan kamu ke roda grup sudo dscl . -append /Groups/wheel wheel yutou,. + Cek, sudo dscl . -list /groups GroupMembership:

wheel                    root yutou

memodifikasi mode paket python

chmod -R 775 /usr/local/python3/lib/python3.6
kougazhang
sumber
0

Jika Anda mengubah variabel $ PATH Anda, itu juga bisa menyebabkan masalah. Jika Anda berpikir itu mungkin masalahnya, periksa ~ / .bash_profile atau ~ / .bashrc Anda

jeffhale
sumber