Debianのdist-packagesからvirtualenvにPythonパッケージを追加する方法は?

Debianのdist-packagesからvirtualenvにPythonパッケージを追加する方法は?

/usr/share/pyshared//usr/lib/pythonX.Y/dist-packages/または(たとえばpython-numpy)にいくつかのPythonパッケージがある場合は、python-scipyパッケージをvirtualenvに追加する方法は?

virtualenvにパッケージを追加するときは、setpy.py「一般的な」Pythonのインストール方法などを使用してインストールする必要がありますか、それとも独自のインストール方法がありますか?

基本的に、複雑なC拡張(numpyなどscipy)を含むPythonパッケージをvirtualenvに簡単に追加できるようにしたいです。pyQt/pysidepygtk

答え1

指摘したように、一般的にホイールを作るのが最善です。特に定期的に再インストールする場合はさらにそうです。

これはPython用のgtkバインディングでは機能しません。コードをテストする方法が必要ですtox(--no-site-packagesを使用してvirtualenvを構築します)。テスト目的では、関連するシステムインストールバージョンに接続するだけで十分ですが、site-packages/のすべてのものをリンクするわけではありませんdist-packages

そのためにインストール可能なパッケージ(ruamel.venvgtk)、Debianベースのシステム(Ubuntu、Linux Mint)でPython2.7とPython3.4への正しいリンクを設定します。プログラムの設定中にこれを行うため、プログラムの変更は不要です。ファイルtox.iniの一部はdeps次のとおりです。

deps =
    pytest
    ruamel.venvgtk

生成されたすべてのvirtualenvに対して関連リンクがインストールされ、pip生成されますruamel.venvgtk

答え2

はい、virtualenvが有効になっている場合は、「一般的な」Pythonインストール方法( distutils )を使用するか、python setup.py installvirtualenv認識ツール(例pip install package:。

インストールするパッケージのバージョンは、virtualenvのアクティブパッケージのバージョンになります。virtualenv MY_ENVvirtualenvを使用するか作成するかは重要ではありませんvirtualenv --no-site-packages MY_ENV。最初のケースでは、システムPythonにインストールされているすべてのパッケージはvirtualenvで使用できますが、virtualenvが有効になっている間にvirtualenvにインストールされているすべてのパッケージはシステムPythonのバージョンをブロックします。 2番目のケースでは、標準ライブラリパッケージと、ここにインストールされているすべてのエントリのみを含むvirtualenvに分離されたPython環境があります。

NumpyやScipyなどのパッケージはLinuxで事前にビルドされたバイナリを提供しないため、パッケージマネージャが提供するバージョンを使用したくない場合は、簡単にビルドする必要があります。

答え3

この質問は、1年以上(2014年3月基準)の活動がなく、誰も回答をしてくれなかったので、どのように解決したかを見てみましょう。

ソースのインストール方法がvirtualenvs(numpy / scipy、pyside)に準拠したパッケージの場合は、ホイールを使用して各venvで再構築されるのを防ぎます。

GTKをサポートしていないパッケージの場合は、Pythonに接続する方法によって異なります。

関連情報