PIP tidak menginstal ke direktori virtualenv

10

Saya mencoba menginstal Django ke virtualenv yang sudah ada.

Mengikuti instruksi yang tercantum pada situs web pip-install di sini , saya menjalankan yang berikut dari SSH.

name@server:~$ . myenv.env/bin/activate
(myenv.env)nam@server:~$ pip install django

Namun di bagian bawah instalasi, saya melihat ini:

creating /usr/local/lib/python2.7/dist-packages/django

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied

Tampaknya sedang mencoba untuk menginstalnya ke direktori global. Saya tidak memiliki hak sudo. Apakah saya melakukan sesuatu yang salah di sini?

Pembaruan: $ PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/star:/usr/bin:/sbin:/bin:/usr/games

Luke Sapan
sumber
Apakah itu berfungsi dengan benar untuk paket lain? Apakah Anda memiliki masalah yang sama jika menggunakan easy_install?
larsks
Masalah yang sama dengan paket lain. Dan saya percaya easy_install membutuhkan sudo dan akan menginstal ke direktori global.
Luke Sapan
Tidak, mengatur virtualenv membuat Anda easy_install serta pip. Anda dapat mengetik which easy_installuntuk melihat apakah Anda menggunakan virtualenv atau sistem.
larsks
Sebenarnya, apakah Anda yakin Anda menjalankan pip dari dalam virtualenv? Apa yang which pipdihasilkan? Dan apakah Anda melihat ke pipdalam myenv.env/bin/?
larsks
Saya melihat pip di dalam myenv.env / bin /. Saya baru saja mencoba "mengaktifkan" env saya lagi, dan meskipun berada dalam mode itu, "yang mana pip" dan "yang easy_install" keduanya mengembalikan "usr / local / bin / pip" dan "usr / bin / easy_install" masing-masing.
Luke Sapan

Jawaban:

6

Maaf untuk jawaban terlambat setahun! Saya memiliki masalah yang sama dan memperbaikinya, saya tidak tahu apakah Anda mengubah nama direktori setelah menciptakan lingkungan virtual, saya melakukannya. Jika demikian maka inilah yang saya lakukan.

1.) deactivatev-env Anda. Setelah perbaikan Anda perlu me-restart v-env, jadi mungkin juga deactivatesekarang. Baik?

2.) Sekarang, karena kita membuat v-env di jalur yang berbeda, kita harus mengubah variabel jalur statis dalam file ini.

Agar pip berfungsi, Anda tidak perlu melakukan ini, tetapi saya masih melakukannya. bin/activate, bin/activate.csh, bin/activate.fish

bin/pip, bin/pip2, bin/pip2.7

bin/easy_install, bin/easy_install2.7

3.) Agar pip berfungsi, Anda harus memperbaiki interpreter python dalam file pip, ini juga memiliki lokasi interpreter statis yang ditetapkan oleh virtualenv dalam proses pembuatan.

4.) Agar easy_install berfungsi? Anda menebaknya, perbaiki lokasi juru bahasa.

Saya harap ini membantu semua orang yang membaca ini di masa depan. Maaf OP, karena terlambat.

Renyah
sumber
Ya itu persis seperti itu. Dalam kasus saya, saya hanya bisa membuat ulang virtualenv dari awal dan menyelesaikannya.
Luke Sapan
Senang bisa membantu
Crispy
Saya sangat senang akhirnya menemukan jawaban. Bagi saya, menggunakan sed di folder venv membuat pekerjaan jauh lebih mudah. Sesuatu seperti grep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @. sumber
Keith
Anda berkata, "Agar pip berfungsi, Anda harus memperbaiki interpreter python dalam file pip", di mana dan bagaimana ini dilakukan?
Dave
3

Saya punya masalah yang sama.

Saya menghapus lingkungan virtual dan membuat yang baru, yang memecahkan masalah.

Mungkin bukan jawaban yang Anda harapkan, tetapi karena itu satu-satunya ...

Menandai
sumber
1

Baik tanpa hak administratif Anda sangat terbatas pada apa yang dapat Anda lakukan. Jika Anda tidak diizinkan meninggikan diri atau meminta hak istimewa, cara terbaik yang saya temukan adalah menciptakan lingkungan lain, membuat file requirement.txt, unduh semua paket yang Anda perlukan ke mesin Anda (django) yang akan juga dapat ditemukan di file persyaratan Anda dan harus berfungsi

secure212
sumber
0

Punya masalah yang sama. Dalam kasus saya alasannya adalah bahwa virtual env dibuat untuk python2.7 (default) tetapi saya menggunakan pip3 untuk menginstal paket. pip3 tidak ada di virtualenv saya jadi default ke yang global. Bagi saya perbaikannya adalah menggunakan

virtualenv flask --python=python3

untuk membuat env.

Adversus
sumber
0

Saya telah mengalami masalah yang sama yang disebabkan oleh penggantian nama pengguna. Jawaban Crispy sepenuhnya benar. Dan solusi saya mungkin lebih nyaman.

setps:
1. Masukkan path bin lingkungan virtual Anda, seperti cd ~/virenv_dir/bin
2. Ganti nama semua file di bawah direktori ini menggunakan perintah sed.sed -i 's/old_name/new_name/' *

xialu
sumber
0

Dalam kasus saya, saya telah mendefinisikan dua alias (untuk mengatasi beberapa masalah lain pada versi python default):

alias pip='/usr/bin/pip3'
alias python='/usr/bin/python3'

Dan ini menyebabkan gejala yang sama:

[Errno 13] Permission denied: '/usr/lib/python3.6/site-packages'

Menghapus alias memecahkan masalah (sebelum atau setelah membuat virtualenv)

coderazzi
sumber
0

Panggilan sudo pipakan memanggil pip global dan bukan pip di virtualenv Anda. Aktifkan / Kerjakan di lingkungan Anda lalu panggil saja pip, tidak sudo pip, ini dapat memperbaiki masalah Anda, seperti yang terjadi pada saya.

Milton Walker
sumber