web-dev-qa-db-ja.com

virtualenvがグローバルサイトパッケージから特定のパッケージを継承するようにします

ベースpythonインストールのライブラリ(選択したもの)のみを含むvirtualenvを作成する方法を探しています。

具体的には、virtualenvの作成中にmatplotlibをvirtualenvにインポートしようとしています。一部のfortranコンパイラライブラリが見つからないため、pipまたはeasy_installで効率的にインストールできません。私が今までやった方法は、手動でコピーすることでした

/usr/lib/python2.7/dist-packages/ to virtualenv_name/lib/python2.7/dist-packages/

ただし、これにより、手作業でインポートされたリンクがyolk(virtualenvで現在使用可能なすべてのライブラリを出力する)によって登録されなくなります。

だから、の選択的なバリアントを行う方法があります

virtualenv --system-site-packages
179

virtualenv --system-site-packagesを使用して環境を作成します。次に、virtualenvをアクティブにし、システムpythonではなくvirtualenvにインストールする場合は、pip install --ignore-installedまたはpip install -Iを使用します。そうすれば、システム全体のバージョンが存在していても、pipは要求したものをローカルにインストールします。 pythonインタープリターは、virtualenvのパッケージディレクトリを最初に検索するため、これらのパッケージはグローバルパッケージをシャドウする必要があります。

204
foobarbecue

--system-site-packagesを使用してから、virtualenvの特定のものを「上書きインストール」できます。そうすれば、virtualenvにインストールするすべてのものがそこから取得されます。それ以外の場合は、システムから取得されます。

16
schacki