Saya tidak dapat menemukan masalah ini didokumentasikan di mana pun, tetapi jika Anda menentukan install-option
dalam ~/.pip/pip.conf
, masalah ini tidak diganti dengan virtualenv
. Saya menetapkan --prefix=/path/to/somwhere
dalam install-option
karena pembatasan pengguna pada pc kerja saya, dan dengan itu disetel, semua penginstalan di venv (dengan $PIP_RESPECT_VIRTUALENV
diaktifkan) masih diinstal di jalur yang ditentukan oleh install-option
. Ini bukanlah perilaku yang diharapkan bagi saya, tetapi saya tidak yakin apakah mengabaikan pip.conf
adalah tindakan yang benar juga. Mungkin mendokumentasikan perilaku seperti itu adalah yang terbaik. Hal aneh lainnya adalah Anda kemudian tidak dapat menghapus instalasi saat berada di virtualenv, karena paket tersebut tidak diinstal di venv, dan pip tidak dapat menemukannya.
Ini terjadi pada saya saat menggunakan pip 1.4.1 dan 1.5.6 dan virtualenv 1.11.6.
Perbaikan saya saat ini adalah menyetel $PIP_CONFIG_FILE
menjadi /dev/null
melalui virtualenvwrapper
postactivate
hook dan membatalkannya di postdeactivate
.
Masalah ini masih ada. Dalam kasus saya, saya ingin menggunakan --user
install ketika tidak di venv (melalui pengaturan ini di ~/.config/pip/pip.conf
, tapi "normal" (in-venv) menginstal ketika di venv (lakukan --user
instal bahkan masuk akal di venv?).
Dua solusi yang mungkin (yang hanya yang pertama benar-benar dapat diimplementasikan dengan pip, tetapi saya sebaiknya memulai diskusi di sini) adalah
~/.config/pip/pip-novenv.conf
atau apa pun), atau--user
no-op di venv (sekali lagi, saya tidak yakin --user
+ venv masuk akal: hanya ada satu ~/.local/lib/pythonX.Y
jadi semua isolasi rusak di sana).Masalah masih ada di Python 3.5.3.
Cukup ironis dan membuat frustrasi bahwa jika seseorang mencoba untuk berhati-hati dengan lingkungan, sampai menggunakan lingkungan virtual dan pengguna menginstal di pip.conf, salah satunya berakhir dengan sistem yang tidak berfungsi.
Saya mencoba untuk menghindari anggota tim menggunakan sudo pip
. Itu semakin sulit.
Bukankah ini bug di virtualenv
- yang tidak menyetel PIP_CONFIG_FILE=/dev/null
saat menggunakan beberapa opsi?
Oh, digigit hari ini.
Bisakah seseorang memberikan instruksi yang jelas tentang cara mereproduksi ini?
Komentar yang paling membantu
Perbaikan saya saat ini adalah menyetel
$PIP_CONFIG_FILE
menjadi/dev/null
melaluivirtualenvwrapper
postactivate
hook dan membatalkannya dipostdeactivate
.