Debian で、dist-packages 内の Python パッケージを virtualenv に追加するにはどうすればよいですか?

Debian で、dist-packages 内の Python パッケージを virtualenv に追加するにはどうすればよいですか?

/usr/share/pyshared/またはにある Python パッケージ/usr/lib/pythonX.Y/dist-packages/(python-numpyまたは をpython-scipy例にとる) を指定した場合、そのパッケージを virtualenv に追加するにはどうすればよいですか?

パッケージを virtualenv に追加する場合、setpy.pyインストールに「通常の」 Python インストール方法 (など) を使用する必要がありますか、それとも独自のインストール方法が必要ですか?

基本的には、複雑な C 拡張機能 ( numpy、、scipyなど) を持つ Python パッケージpyQt/pysidepygtk仮想環境に簡単に追加できるようにしたいと考えています。

答え1

ご指摘のとおり、特に定期的に再インストールする場合は、ホイールを作成するのが最善です。

Python の GTK バインディングではこれは機能しなかったため、tox(--no-site-packages で仮想環境を構築) を使用してコードをテストする何らかの方法が必要でした。テスト目的では、関連するシステムにインストールされているバージョンをリンクするだけで十分ですが、site-packages/からすべてをリンクする必要はありませんdist-packages

このためにインストール可能なパッケージを作成しました(ruamel.venvgtk) は、Debian ベースのシステム (Ubuntu、Linux Mint) で Python2.7 および Python3.4 の適切なリンクを設定します。これはプログラムのセットアップ中に行われるため、プログラムを変更する必要はありません。ファイルtox.inidepsセクションは次のようになります。

deps =
    pytest
    ruamel.venvgtk

作成されたすべての仮想環境に対して、関連するリンクがpipインストールされ、作成されます。ruamel.venvgtk

答え2

はい、virtualenv がアクティブな場合は、distutils の「通常の」 Python インストール方法 ( python setup.py install)、または virtualenv 対応ツール (例pip install package) を使用して、必要なパッケージをインストールする必要があります。

インストールするパッケージのバージョンは、virtualenv のアクティブなパッケージ バージョンになります。virtualenv MY_ENVまたはを使用して virtualenv を作成するかどうかは関係ありませんvirtualenv --no-site-packages MY_ENV。前者の場合、システム Python にインストールされているすべてのパッケージが virtualenv で使用できますが、virtualenv がアクティブな間は、virtualenv にインストールしたパッケージによってシステム Python のバージョンがマスクされます。後者の場合、virtualenv 内に分離された Python 環境が作成され、標準ライブラリ パッケージとそこにインストールしたパッケージだけが使用可能になります。

Numpy や Scipy などのパッケージは Linux 上でビルド済みのバイナリを提供していないことに注意してください。そのため、パッケージ マネージャー経由で利用可能なバージョンを使用しない場合は、自分でビルドすることに慣れている必要があります。

答え3

この質問は 1 年以上 (2014 年 3 月現在) 何も行われていないため、誰も答えを持っていないと思います。そこで、私がこの問題を解決した方法を書いてみます。

ソースのインストール方法が仮想環境 (numpy/scipy、pyside) を尊重するパッケージの場合は、すべての仮想環境で再構築する必要がないように wheels を使用します。

そうでないパッケージ (GTK) の場合は、Python にフックする方法によって異なります。

関連情報