pip install -r requirements.txt
gagal dengan pengecualian di bawah ini OSError: [Errno 13] Permission denied: '/usr/local/lib/...
. Apa yang salah dan bagaimana cara memperbaikinya? (Saya mencoba menyiapkan Django )
Installing collected packages: amqp, anyjson, arrow, beautifulsoup4, billiard, boto, braintree, celery, cffi, cryptography, Django, django-bower, django-braces, django-celery, django-crispy-forms, django-debug-toolbar, django-disqus, django-embed-video, django-filter, django-merchant, django-pagination, django-payments, django-storages, django-vote, django-wysiwyg-redactor, easy-thumbnails, enum34, gnureadline, idna, ipaddress, ipython, kombu, mock, names, ndg-httpsclient, Pillow, pyasn1, pycparser, pycrypto, PyJWT, pyOpenSSL, python-dateutil, pytz, requests, six, sqlparse, stripe, suds-jurko
Cleaning up...
Exception:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install
requirement.install(install_options, global_options, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install
self.move_wheel_files(self.source_dir, root=root)
File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files
pycompile=self.pycompile,
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files
clobber(source, lib_dir, True)
File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber
os.makedirs(destsubdir)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/amqp-1.4.6.dist-info'
python
permissions
pip
install
RunLoop
sumber
sumber
Jawaban:
Opsi a) Buat virtualenv, aktifkan dan instal:
Opsi b) Instal di homedir Anda:
Rekomendasi saya menggunakan opsi aman (a), sehingga persyaratan proyek ini tidak mengganggu persyaratan proyek lainnya.
sumber
sudo:pip: command not found
pada contoh aws ec2 saya saat menjalankan perintah ini. Tolong bantu.sudo
saran. Meskipun berhasil sekarang, ini akan membuat Anda banyak pusing di masa depan.Kita harus benar-benar berhenti menyarankan penggunaan
sudo
withpip install
. Lebih baik mencoba dulupip install --user
. Jika ini gagal, lihat posting teratas di sini .Alasan Anda tidak boleh menggunakan
sudo
adalah sebagai berikut:Saat Anda menjalankan pip
sudo
, Anda menjalankan kode Python arbitrer dari Internet sebagai pengguna root, yang merupakan risiko keamanan yang cukup besar. Jika seseorang memasang proyek berbahaya di PyPI dan Anda menginstalnya, Anda memberikan akses root penyerang ke mesin Anda.sumber
sudo x install
, untuk semuax
(termasukx = make
).--user
menginstal paket di direktori home Anda, bukan di root. Memasang sesuatu ke lokasi ini tidak memerlukan hak ekstra apa pun.sudo
telah dihapus setahun yang lalu. Jawaban ini sudah usang - harap perbarui dan perbarui. Anda juga perlu menyebutkan pemasangan per pengguna vs seluruh sistem, dan izin. Jangan gunakan jawaban Anda untuk secara langsung mengkritik jawaban lain, yang akan cenderung cepat usang.Anda mencoba menginstal paket di jalur seluruh sistem tanpa memiliki izin untuk melakukannya.
Secara umum, Anda dapat menggunakansudo
untuk sementara mendapatkan izin pengguna super atas tanggung jawab Anda untuk menginstal paket di jalur seluruh sistem:Temukan lebih banyak tentang disudo
sini .Sebenarnya, ini adalah ide yang buruk dan tidak ada kasus penggunaan yang baik untuk itu, lihat komentar @ wim.
Jika Anda tidak ingin membuat perubahan di seluruh sistem, Anda dapat menginstal paket pada jalur per pengguna Anda menggunakan
--user
tanda.Yang dibutuhkan hanyalah:
Terakhir, untuk kontrol yang lebih halus , Anda juga dapat menggunakan virtualenv , yang mungkin merupakan solusi terbaik untuk lingkungan pengembangan, terutama jika Anda mengerjakan banyak proyek dan ingin melacak dependensi masing-masing.
Setelah mengaktifkan virtualenv Anda dengan
$ my-virtualenv/bin/activate
perintah berikut akan menginstal paket di dalam virtualenv (dan bukan di jalur seluruh sistem):
pip install -r requirements.txt
sumber
pyenv/pipenv
, harus menyebutkan itu, dalam preferensi untukvirtualenv
(atauconda-env
) b) sudo dianggap berbahaya, dan lihat jawaban lain mengapa. Jadi letakkan jawaban berbasis env pertama, dan sudo yang terakhir, dengan pelepasan tanggung jawab besar.sudo pip install -r requirements.txt
tidak pernah benar. Lingkungan python sistem milik sistem, titik . Jika Anda menginstal lebih banyak barang python ke dalam sistem, melakukannya dengan manajer paket saja (misalnyasudo yum install
,apt-get
, dll ...) sejak mereka repo harus memiliki versi yang aman dan kompatibel perpustakaan berhasil.sudo make install
, biasanya dikompilasi + terkait, tidak benar-benar analog dengansudo pip install
sejak menginstal ke sistem Python env dapat membatalkan dependensi . Misalkan ada layanan sistempython-frobnicator
, yang memiliki ketergantunganfroblib
(ini juga akan ada di pengelola paket dan disematkan ke versi yang kompatibel), dan kemudian Andasudo pip install
beberapa aplikasi atau lib lain yang memiliki ketergantungan pada "froblib > 1.2
". Pip dengan senang hati akan "mengupgrade" versi sistemfroblib
dengan yang lebih baru, yang mungkin tidak kompatibel / belum teruji dan merusak sistem.Hanya mengklarifikasi apa yang berhasil untuk saya setelah banyak kesulitan di linux (berbasis ubuntu) pada kesalahan izin ditolak, dan memanfaatkan jawaban Bert di atas, saya sekarang menggunakan ...
atau jika menjalankan pip pada file persyaratan ...
dan ini bekerja dengan andal untuk setiap pemasangan pip termasuk membuat lingkungan virtual.
Namun, solusi terbersih dalam pengalaman saya selanjutnya adalah menginstal
python-virtualenv
danvirtualenvwrapper
dengansudo apt-get install
di tingkat sistem.Kemudian, di dalam lingkungan virtual, gunakan
pip install
tanpa--user
flag AND tanpasudo
. Jauh lebih bersih, lebih aman, dan lebih mudah secara keseluruhan.sumber
pip install --user -r requirements.txt
Pengguna tidak memiliki izin menulis untuk beberapa jalur instalasi Python. Anda dapat memberikan izin dengan:
Jadi Anda harus memberi izin, lalu coba instal lagi, jika Anda memiliki jalur baru, Anda juga harus memberikan izin:
sumber
/usr
biasanya dimiliki oleh root, hari ini. Mengunyah secara berulang dapat mengacaukan sistem Anda secara besar-besaran. HINDARI .Jika Anda membutuhkan izin, Anda tidak dapat menggunakan 'pip' dengan 'sudo'. Anda bisa melakukan trik, sehingga Anda bisa menggunakan 'sudo' dan menginstal paket. Letakkan saja 'sudo python -m ...' di depan perintah pip Anda.
sumber
Jadi, saya mendapatkan kesalahan yang sama persis karena alasan yang sama sekali berbeda. Karena bug Homebrew + pip yang benar-benar terpisah, tetapi diketahui , saya telah mengikuti solusi ini yang tercantum di dokumen bantuan Google Cloud, tempat Anda membuat file .pydistutils.cfg di direktori beranda Anda. File ini memiliki konfigurasi khusus yang seharusnya hanya Anda gunakan untuk menginstal pustaka tertentu. Saya seharusnya menghapus file disutils.cfg itu setelah menginstal paket, tetapi saya lupa melakukannya. Jadi perbaikan bagi saya sebenarnya hanya ...
rm ~/.pydistutils.cfg
.Dan kemudian semuanya bekerja seperti biasa. Tentu saja, jika Anda memiliki beberapa konfigurasi di file itu karena alasan yang sebenarnya, maka Anda tidak ingin langsung meng-rm file itu. Tetapi jika ada orang lain yang melakukan solusi itu, dan lupa menghapus file itu, ini melakukan trik untuk saya!
sumber
Itu karena masalah izin,
default itu akan
/usr/local/lib/python2.7/
atau coba,
dan kemudian berkata,
pip install -r requirements.txt
ini akan menginstal di dalam env Andajangan katakan,
sudo pip install -r requirements.txt
ini akan menginstal ke jalur python sewenang-wenang.sumber