9

バイナリ パッケージを使用してサイト全体に pysvn をインストールできます。たとえば、Ubuntu では次のようになります。

$ sudo apt-get install python-svn

または、Windows では、.exe インストーラーを使用してサイト全体にインストールできます。

virtualenvの外で、これを行うことができます

$ python -c "import pysvn; print 'ok'"
ok

次に、virtualenv を作成します ( virtualenvwrapperパッケージのmkvirtualenvコマンドを使用します)。

$ mkvirtualenv test1

しかし、virtualenv はデフォルトでグローバル サイト パッケージをインポートしないため、この virtualenv 内で pysvn を使用することはできません。

(test1)$ python -c "import pysvn; print 'ok'"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named pysvn

グローバル サイト パッケージを有効にせずに virtualenv で pysvn にアクセスするにはどうすればよいですか?

4

1 に答える 1

9

これを処理する方法はいくつかあります。

オプション 0

virtualenv 内からグローバル サイト パッケージへのアクセスを許可します。仮想環境の作成時に--system-site-packagesオプションを渡します。virtualenv

または、toggleglobalsitepackagesコマンド ( virtualenvwrapperから) を使用して、グローバル サイト パッケージへのアクセスを許可します。

(test1)$ toggleglobalsitepackages
Enabled global site-packages
(test1)$ python -c "import pysvn; print 'ok'"
ok

(test1)$ toggleglobalsitepackages
Disabled global site-packages
(test1)$ python -c "import pysvn; print 'ok'"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named pysvn

オプション1

easy_install を使用して、バイナリ インストーラーを使用してパッケージを virtualenv にインストールします。たとえば、Windows では、プロセスは次のようになります。

  1. バイナリ インストーラー ファイルをダウンロードします。この例では、example_installer.msi (または example_installer.exe) とします。
  2. virtualenv を有効にします (私はWindowsで virtualenvwrapper-winを使用しています)
  3. easy_install example_installer.msi

インストーラーをダブルクリックして GUI モードで実行し (その後、Windows の [プログラムの追加と削除] コントロール パネルを使用してアンインストールします)、サイト全体にインストーラーをインストールできることを確認します。サイト全体にインストールできる場合、easy_install はおそらく virtualenv にインストールできます。

ただし、pysvn バイナリ インストーラーは、easy_install 用に適切に構成されていません。Windows pysvn バイナリ インストーラーでこれを試みると、次のエラーが発生します。

error: py27-pysvn-svn185-1.7.9-1572.exe is not a valid distutils Windows .exe

オプション 2

virtualenvwrapperadd2virtualenvコマンドを使用します。これにより、virtualenv の site-packages ディレクトリに .pth ファイルが追加され、virtualenv が指定されたディレクトリにアクセスできるようになります。

特定のパッケージではなく、親ディレクトリを指定する必要があることに注意してください。つまり、代わりに

add2virtualenv /usr/lib/python2.7/dist-packages/pysvn

そのはず

add2virtualenv /usr/lib/python2.7/dist-packages

この質問を参照してください: add2virtualenv (virtualenv ラッパー) は scipy では機能しません

パッケージがインストールされているディレクトリを見つけるには、次のようにします。

$ python
>>> import pysvn
>>> pysvn.__file__
'/usr/lib/python2.7/dist-packages/pysvn/__init__.pyc'

問題は、これには pysvn だけでなく、指定されたディレクトリ内のすべてのパッケージが含まれることです。したがって、 と同じ欠点がありtoggleglobalsitepackagesます。

オプション 3

インストール ディレクトリを virtualenv のサイト パッケージにシンボリック リンクします。

virtualenv の site-packages ディレクトリにアクセスする便利な方法は、virtualenvwrapper の cdsitepackagesコマンドを使用することです。

cdsitepackages
ln -s /usr/lib/python2.7/dist-packages/pysvn pysvn

概要

Windows では、オプション 1 (バイナリ インストーラーからの easy_install) を試してください。それが失敗した場合は、グローバルにインストールし、virtualenvwrapper-win の toggleglobalsitepackagesコマンドを使用するか、 virtualenv に--system-site-packagesオプションを渡して、virtualenv がそれにアクセスできるようにします。

Linux や OS X など、シンボリック リンクをサポートするシステムでは、オプション 3 を使用します。これにより、グローバル サイト パッケージ全体へのアクセスを許可することなく、必要な特定のパッケージにアクセスできます。

于 2014-09-22T22:33:50.623 に答える