Saya mencoba untuk menerapkan paket Python pip
dalam lingkungan virtual pada mesin Ubuntu, tetapi mengalami masalah terkait izin. Sebagai contoh:
(TestVirtualEnv)test@testServer:~$ pip install markdown2
diakhiri oleh:
kesalahan: tidak dapat membuat '/home/test/virtualenvs/TestVirtualEnv/lib/python3.3/site-packages/markdown2.py': Izin ditolak
Saya tidak bisa sudo
, karena itu akan menginstal paket secara global, dan tidak dalam lingkungan virtual. Saya chown
ed site-packages
; ls
hanya menampilkan direktori yang terkait dengan easy_install
, pip
dan setuptools
, dan tidak ada yang terkait dengan Penurunan Harga.
Bagaimana cara menyebarkan paket di lingkungan virtual dengan pip
tanpa mengalami kesalahan terkait izin?
python
virtualenv
pip
Arseni Mourzenko
sumber
sumber
sudo
?sudo
.sudo
. Memang, paket terinstal dengan benar sekarang. Tolong, bisakah Anda mempromosikan komentar Anda menjadi jawaban sehingga saya bisa menerimanya?virtualenv
direktori, karena Anda dapat mengaktifkanvirtualenv
dengan pengguna lain, tetapi tidak akan membiarkan Anda menginstal paket apa pun dan akan memberikan akses izin.Jawaban:
virtualenv
masalah izin mungkin terjadi saat Anda membuatvirtualenv
sebagaisudo
dan kemudian beroperasi tanpasudo
divirtualenv
.Seperti yang ditemukan dalam komentar pertanyaan Anda, solusi di sini adalah untuk membuat para
virtualenv
tanpasudo
dapat kerja (esp. Write) di dalamnya tanpasudo
.sumber
virtualenv
tanpa sudo?sudo
, lihat jawaban oleh @vingtoft untuk cara memperbaikinya dengan mudah tanpa membuat ulangLarutan:
Jika Anda membuat virtualenv sebagai root, jalankan perintah berikut:
Ini mungkin akan memperbaiki masalah Anda.
Bersulang
sumber
Dalam kasus saya, saya menggunakan
mkvirtualenv
, tetapi tidak memberi tahu bahwa saya akan menggunakan python3. Saya mendapat kesalahan ini:mkvirtualenv hug pip3 install hug -U .... error: could not create '/usr/lib/python3.4/site-packages': Permission denied
Ini bekerja setelah menentukan python3:
sumber
Saya tidak membuat virtualenv saya menggunakan sudo. Jadi jawaban Sebastian tidak cocok untukku. Proyek saya disebut
utils
. Saya memeriksautils
direktori dan melihat ini:-rw-r--r-- 1 macuser staff 983 6 Jan 15:17 README.md drwxr-xr-x 6 root staff 204 6 Jan 14:36 utils.egg-info -rw-r--r-- 1 macuser staff 31 6 Jan 15:09 requirements.txt
Seperti yang Anda lihat,
utils.egg-info
dimiliki olehroot
tidakmacuser
. Itulah mengapa itu memberi sayapermission denied
kesalahan. Saya juga harus menghapus/Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-link
seperti yang dibuat olehroot
juga. Saya melakukannyapip install -e .
lagi setelah menghapusnya, dan berhasil.sumber
Jika Anda membuat lingkungan virtual menggunakan root, gunakan perintah ini
itu akan memberi Anda akses root dan kemudian mengaktifkan lingkungan virtual Anda menggunakan ini
sumber
Anda tidak mengaktifkan lingkungan virtual sebelum menggunakan pip.
Cobalah dengan:
Dan kemudian gunakan pip -r requirement.txt di folder utama Anda
sumber
Saya juga mengalami ini (secara tidak sengaja) setelah membuat venv baru saat berada di dalam lingkungan virtual yang ada. cara mudah untuk mendiagnosis ini adalah dengan melihat di mana
python
terhubung dengan symlink, yaitu jalankan:dan pastikan itu menunjuk ke biner Python yang sesuai. Untuk sebagian besar sistem, ini akan menjadi
/usr/bin/python
atau/usr/bin/python3
. sedangkan jika menunjuk ke lingkungan virtual yang ada, itu akan menjadi seperti/home/youruser/somedir/bin/python
. jika itu yang terakhir daripada yang saya sarankan untuk membuat ulang venv sambil memastikan bahwa Anda tidak "di dalam" virtualenv yang ada (yaitu jalankandeactivate
)sumber
Saat membuat virtualenv jika Anda menggunakan sudo, direktori dibuat dengan hak akses root. Jadi, saat Anda mencoba menginstal paket dengan pengguna non-sudo, Anda tidak akan memiliki izin untuk menginstalnya. Jadi selalu buat virtualenv tanpa sudo dan instal tanpa sudo.
Anda juga dapat menyalin paket yang diinstal pada python global ke virtualenv.
sumber