3

Arch Linux では、virtualenvwrapper をシステム全体にインストールした後、sudo pip2 install virtualenvwrapperこれをユーザーの .bash_profile に追加して、

 export WORKON_HOME=/home/myuser/.virtualenvs
 export PROJECT_HOME=/home/myuser/work
 source /usr/bin/virtualenvwrapper.sh

新しいシェル ウィンドウを起動するたびにエラーが表示されます:-

which: no python in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin/core_perl)
-bash: : command not found
virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for VIRTUALENVWRAPPER_PYTHON= and that PATH is set properly.

これは、virtualenvwrapper.sh スクリプトの 50 行目まで追跡できます。

 47 # Locate the global Python where virtualenvwrapper is installed. 
 48 if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] 
 49 then 
 50     VIRTUALENVWRAPPER_PYTHON="$(\which python)" 
 51 fi 

これは、python 2.7 のインストールに python2 を使用するという arch linux の規則との競合の結果です。

行 50 を に変更するとwhich python2、すべてが完全に機能し、新しいシェルを起動するたびにエラー メッセージが表示されなくなります。

この問題を解決する適切な方法は何ですか? 現在の OS が arch linux であることを明示的に確認し、if-else 条件を導入して virtualenvwrapper.sh で which python2 を使用し、パッチを virtualenvwrapper の作成者に送信する必要がありますか? または、arch Linux マシンの構成でできることはありますか?

4

3 に答える 3

3

Virtualenvwrapper には、python および virtualenv 実行可能ファイルを指す変数VIRTUALENVWRAPPER_PYTHONと変数があります。VIRTUALENVWRAPPER_VIRTUALENVしたがって、あなた.bash_profileは次のように書くことができます:

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv2
source /usr/bin/virtualenvwrapper.sh
于 2012-05-20T19:00:16.477 に答える
2

このアーチ固有の python 癖 (を使用する規則python2) に答えるために、具体的には次のようなソフト リンクを作成します。

ln -s /usr/bin/python2 /usr/local/bin/python

/usr/local/bin/usr/binbash システムの PATH 環境変数でpython優先されるため、入力するとき、または virtualenvwrapper.sh スクリプトが 50 行目で参照するときに、which python上記の virtualenvwrapper の競合に遭遇することはなくなり、すべてが期待どおりに機能します。

これを行うことの欠点は、arch linux が設計されている "python 3" (デフォルトの python コマンドと見なされている) 規則を台無しにする可能性があることです。そのため、ターゲットボックスでpython 3関連のライブラリまたはpython 3に関連するパッケージのインストールを使用しないように注意する必要があります。

于 2012-04-18T14:46:14.307 に答える