web-dev-qa-db-ja.com

apt-getをvirtualenvにインストールする方法を教えてください。

もちろん、それは可能です。

たとえば、次のようにpython-dbusをダウンロードできます。$ Sudo apt-get download python-dbus

しかし、現在のvirtualenvにあるこの.debパッケージを使用して、次に何をすべきでしょうか?

本当にこの方法で行う必要がある場合は、グローバルにインストールされるファイルを直接virtualenvにコピーするだけです。たとえば、必要なライブラリがインストールされていないため、pycurlを動作させることができませんでしたが、apt-get install python-pycurl した。だから私は次のことをしました:

Sudo apt-get install python-pycurl
cp /usr/lib/python2.7/dist-packages/pycurl* ~/.virtualenvs/myenv/lib/python2.7/site-packages/

インストールはそれを/usr/lib/python2.7に追加していると言いました。そのため、私はvirtualcursorにコピーしたファイルを確認した後、pycurlを使用してそのディレクトリでsite-packagesまたはdist-packagesを探しました。また、実行可能ファイルをbinからvirtualenvのbinディレクトリにコピーする必要があります。

また、pip install -r requirements.txtそこにpycurlが見つかり、pipでインストールしたかのようにスキップしました。

23
MrColes

なぜあなたはこれをしたいのですか?重要なのは、そのようなことをしないようにすることです...

virtualenv whatever
cd whatever
bin/pip install dbus-python

--no-site-packagesvirtualenvに指定して、さらに分離することもできます。

6
Jon Clements

最初にdbus開発ライブラリをインストールします(他の開発ライブラリが必要になる場合がありますが、これで十分です)

Sudo apt-get install libdbus-1-dev libdbus-glib-1-dev

次に、virtualenvをアクティブにして、次を実行します。失敗しますが、大丈夫です。

pip install dbus-python

最後に、virtualenvのビルドディレクトリに移動し、Python以外の方法でインストールします。

cd $VIRTUAL_ENV/build/dbus-python
chmod +x configure
./configure --prefix=$VIRTUAL_ENV
make
make install
3
SmileyChris

別の解決策は、グローバルにインストールしてから、virtualenvがそれを表示できるようにすることです。例として、Python 3のmatplotlibをインストールする場合を考えます。

  1. Sudo apt update#最初に更新
  2. Sudo apt install python3-matplotlib#グローバルにインストール
  3. Sudo pip3 install -U virtualenv#pip3を使用してPython 3のvirtualenvをインストールします
  4. virtualenv --system-site-packages -p python3 ./venv#system-site-packagesオプションにより、venvはmatplotlibを含むすべてのグローバルパッケージを表示できます
  5. source ./venv/bin/activate #virtualenv内でmatplotlibを使用するには、venvをアクティブにします
  6. deactivate#virtualenvの使用が完了するまで終了しないでください
0
Joshua Kan