Kembalikan opsi `--no-situs-paket` dengan virtualenv


126

Saya telah membuat virtualenv menggunakan --no-site-packagesopsi dan menginstal banyak perpustakaan. Sekarang saya ingin mengembalikan --no-site-packagesopsi dan menggunakan juga paket global.

Bisakah saya melakukannya tanpa membuat ulang virtualenv?

Lebih tepatnya:

Saya bertanya-tanya apa yang sebenarnya terjadi ketika membuat virtualenv menggunakan --no-site-packagesopsi yang bertentangan dengan tidak menggunakan opsi itu.

Jika saya tahu apa yang terjadi maka saya bisa mencari cara untuk membatalkannya.


pertanyaan lain ditandai sebagai duplikat dari pertanyaan ini, dan ia menerima jawaban yang mungkin juga menarik di sini.
mariotomo

Jawaban:


162

Coba hapus (atau ganti nama) file no-global-site-packages.txtdi Libfolder Anda di bawah lingkungan virtual Anda.

Di mana venv adalah nama lingkungan virtual Anda, dan python3.4 sesuai dengan versi python mana pun yang terlibat, misalnya:

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

Dan jika Anda berubah pikiran dan ingin mengembalikannya:

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

Catatan: Jika Anda tidak melihat file di atas, maka Anda memiliki versi virtualenv yang lebih baru. Anda ingin mengikuti jawaban ini sebagai gantinya


18
Itu akan melakukannya. Keberadaan (atau tidak adanya file) dari file tersebut adalah satu-satunya efek langsung dari flag no-site-paket. Siteenpy yang dikustomisasi Virtualenv mencari file itu untuk memutuskan apakah akan menambahkan direktori paket situs global ke sys.path.
Carl Meyer

Cemerlang! Itu berhasil! Terima kasih banyak untuk jawaban itu, dan terima kasih kepada Carl Meyer untuk komentar tambahan.
Olivier Verdier

1
itu virtualenv/python2.7/no-global-site-packages.txtdi server ubuntu saya.
caesarsol

4
Versi Windows dari virtualenv berisi virtualenv/pyenv.cfgfile. Ada satu opsi untuk paket situs: include-system-site-packages = false Ubah nilai ini dan panggil Activate.ps1
georgik

@georgik - yang juga berfungsi untuk versi Linux venvuntuk Python 3.4.
Tomasz Dzieniak

13

Setidaknya untuk Python 3.5.2, ada pyvenv.cfgfile di root direktori virtualenv. Yang perlu Anda lakukan adalah mengubah include-system-site-packagestanda dari falsemenjadi true:

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

12

Saat menggunakan virtualenvwrapper untuk mengelola virtualenvs, Anda dapat menggunakan fungsi shell toggleglobalsitepackagesuntuk beralih antara menggunakan dan tidak menggunakan paket situs.


2

Coba tambahkan symlink antara /virtualenv_root/lib/dan/path/to/desired/site-packages/


+1 Ini berfungsi di sistem saya (openSUSE Linux 12.3, Python 2.7.3, virtualenv 1.8.4); Saya tidak punya no-global-site-packages.txttempat.
Aaron Digulla

2

Buka folder venv Anda dan buka pyvenv.cfg. (Misalnya jika lingkungan virtual Anda dipanggil myenvmaka file tersebut akan berlokasi di myenv\pyvenv.cfg)

Anda akan melihat pengaturan boolean bernama include-system-site-packages

Tetapkan pengaturan itu trueuntuk menggunakan paket global

Jika Anda ingin menonaktifkan menggunakan paket global, cukup setel pengaturan itu falsesebagai gantinya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.