virtualenvで `--no-site-packages`オプションを元に戻します


126

--no-site-packagesオプションを使用してvirtualenvを作成し、多数のライブラリをインストールしました。--no-site-packagesオプションを元に戻し、グローバルパッケージも使用したいと思います。

virtualenvを再作成せずにそれを行うことはできますか?

より正確に:

そのオプションを使用しないのではなく、オプションを使用してvirtualenvを作成すると、正確には何起こるのでしょうか--no-site-packages

何が起こるか知っているなら、それを元に戻す方法を見つけることができます。


他の質問はこの質問の重複としてマークされ、ここでも興味深い回答を受け取りました。
mariotomo 2014年

回答:


162

仮想環境下のフォルダー内のファイルno-global-site-packages.txtを削除(または名前を変更)してみてくださいLib

ここでvenvは仮想環境の名前であり、python3.4関連するpythonのバージョンに対応します。次に例を示します。

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

気が変わって元に戻したい場合:

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

注:上記のファイルが表示されない場合は、virtualenvの新しいバージョンを使用しています。代わりにこの回答をフォローする必要があります


18
それでうまくいきます。そのファイルの存在(または非存在)は、no-site-packagesフラグの直接的な影響のみです。Virtualenvのカスタマイズされたsite.pyはそのファイルを探し、グローバルなサイトパッケージディレクトリをsys.pathに追加するかどうかを決定します。
カールマイヤー

鮮やかさ!やった!その答えをありがとう、そして追加のコメントをしてくれたカール・マイヤーに感謝します。
Olivier Verdier 2010

1
それvirtualenv/python2.7/no-global-site-packages.txtは私のubuntuサーバーにあります。
シーザーソル2014年

4
virtualenvのWindowsバージョンにはvirtualenv/pyenv.cfgファイルが含まれています。サイトパッケージには1つのオプションがあります。 include-system-site-packages = false この値を変更してActivate.ps1を呼び出します
georgik

@georgik-Linuxバージョンのvenvfor でも機能しPython 3.4ます。
Tomasz Dzieniak

13

少なくともPython 3.5.2ではpyvenv.cfg、virtualenvディレクトリのルートにファイルがあります。include-system-site-packagesフラグをからfalseに変更するだけですtrue

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


2

/virtualenv_root/lib/との間にシンボリックリンクを追加してみてください/path/to/desired/site-packages/


+1これは私のシステム(openSUSE Linux 12.3、Python 2.7.3、virtualenv 1.8.4)で動作します。no-global-site-packages.txtどこにもありません。
アーロンディグラ

2

venvフォルダーに移動し、を開きますpyvenv.cfg。(たとえば、仮想環境が呼び出されたmyenv場合、ファイルはに配置されますmyenv\pyvenv.cfg

というブール設定が表示されます include-system-site-packages

trueグローバルパッケージを使用するように設定する

グローバルパッケージの使用を無効にしたい場合は、false代わりにその設定を設定してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.