Virtualenv ile `--no-site-packages` seçeneğini geri alın


126

Bu --no-site-packagesseçeneği kullanarak bir virtualenv oluşturdum ve çok sayıda kitaplık kurdum. Şimdi --no-site-packagesseçeneği geri döndürmek ve aynı zamanda genel paketleri kullanmak istiyorum .

Bunu virtualenv'i yeniden oluşturmadan yapabilir miyim?

Daha kesin:

Bu seçeneği kullanmamak yerine seçeneği kullanarak bir virtualenv oluştururken tam olarak ne olduğunu merak ediyorum --no-site-packages.

Ne olacağını bilirsem, nasıl geri alacağımı bulabilirim.


başka bir soru bunun kopyası olarak işaretlendi ve burada da ilginç olabilecek bir yanıt aldı.
mariotomo

Yanıtlar:


162

Dosyayı kaldırma (ya da yeniden adlandırma) deneyin no-global-site-packages.txtsizin de Libsanal ortamda klasörde.

Nerede venv sanal ortamın adı ve bir python3.4 piton sürüm örneğin katılan hangisi karşılık gelir:

$ rm venv/lib/python3.4/no-global-site-packages.txt

Ve fikrinizi değiştirir ve geri koymak isterseniz:

$ touch venv/lib/python3.4/no-global-site-packages.txt

Not: Yukarıdaki dosyayı görmüyorsanız, daha yeni bir virtualenv sürümüne sahipsiniz demektir. Bunun yerine bu cevabı takip etmek isteyeceksiniz


18
Bu yapacak. Bu dosyanın varlığı (veya yokluğu), site paketleri yok bayrağının tek doğrudan etkisidir. Virtualenv'in özelleştirilmiş site.py, sys.path'e genel site paketleri dizinlerinin eklenip eklenmeyeceğine karar vermek için bu dosyayı arar.
Carl Meyer

Parlak! Başardı! Cevabınız için çok teşekkürler ve ek yorum için Carl Meyer'e teşekkürler.
Olivier Verdier

1
bu virtualenv/python2.7/no-global-site-packages.txtbenim ubuntu sunucumda.
caesarsol

4
Virtualenv'nin Windows sürümü virtualenv/pyenv.cfgdosya içerir . Site paketleri için bir seçenek vardır: include-system-site-packages = false Bu değeri değiştirin ve Activate.ps1'i arayın
georgik

@georgik - bu da Linux sürümü için çalışır venviçin Python 3.4.
Tomasz Dzieniak

13

En azından Python 3.5.2 için, pyvenv.cfgvirtualenv dizininin kökünde dosya vardır . Tek yapmanız gereken tek şey değiştirmektir include-system-site-packagesgelen bayrak falseiçin true:

home = /usr/bin
include-system-site-packages = false  # <- change this to "true"
version = 3.5.2

12

Kullanırken virtualenvwrapper virtualenvs yönetmek için, bu kabuk işlevini kullanabilirsiniz toggleglobalsitepackageskullanarak ve site paketleri kullanmayan arasındaki anahtara.


2

/virtualenv_root/lib/Ve arasına bir sembolik bağ eklemeyi deneyin/path/to/desired/site-packages/


+1 Bu benim sistemimde çalışıyor (openSUSE Linux 12.3, Python 2.7.3, virtualenv 1.8.4); Hiçbir yerim yok no-global-site-packages.txt.
Aaron Digulla

2

Venv klasörünüze gidin ve açın pyvenv.cfg. (Örneğin, sanal ortamınız çağrılırsa myenv, dosya şu adreste bulunacaktır myenv\pyvenv.cfg)

Adlı bir boole ayarı göreceksiniz include-system-site-packages

Bu ayarı şu şekilde ayarlayın: true genel paketleri kullanacak şekilde

Global paketleri kullanmayı devre dışı bırakmak istiyorsanız, falsebunun yerine bu ayarı olarak ayarlayın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.