2016-05-18 1 views
0

私の家では、lib/python2.7という名前のディレクトリがあります(実際には、Pythonのバージョンによって、そのようなディレクトリが5つあります)。これは共有ホスティング(Webfaction)なので、そのディレクトリは私にとって基本的なものです。そこには、virtualenvvirtualenvwrapperがインストールされています。共有ホスティングの顧客として、私はsudoへのアクセス権がなく、グローバルパッケージをインストールしています。しかし私のvirtualenvのピップリストパッケージは、私のlib/python2.7ディレクトリにありますか?

、私はvirtualenvの作成時に:

$ mkvirtualenv myenvironment 
$ workon myenvironment 
$ which pip 
# outputs the myenvironment's path to pip 
$ pip freeze 

コマンドは、下の全パッケージの一覧を表示する私のlib/python2.7(これが原因に...レガシー私が持っている同じvirtualenvのパッケージ、および競合のパッケージが含まれて...理由)。これは、パッケージの名前であるパッケージをlib/python2.7にインストールしたいのであれば、私には気になりません。

workon環境内で、私はPYTHONPATHは奇妙なものを持っているかどうかをチェックしてみてください、それが空である:私はすべての仮想環境の外にそのコマンドをしようとした場合

$ echo $PYTHONPATH 
# shows a blank line 

また空です。

--no-site-packagesがデフォルトであるようだが、問題のほんの一部を解決します。これはつまり、pip freeze | wc -lは、ある環境では、どの環境からでもグローバルに実行した場合よりも低い値を表示します。これは、既に提供されているパッケージが除外されており、ホスティング自体からですまた、ホスティングはと共有されており、グローバルスペースにアクセスすることはできません)。

私の質問は次のとおりです。これをどのように解決できますか?私はvirtualenvのは$HOME/lib/python2.7

でパッケージを一覧表示しませ欲しいthis questionにデュープ-リンクを避けてください、何もあり便利だったとまだ受け入れ答えを持っていません。私はその質問に

答えて

0

を各ソリューションを読んで試した後、私はあなたがPythonのバージョンを指定する必要があると思うこの質問を書きました。あなたはあなたがいないPythonのバージョンを指定するときので

virtualenv -p /usr/bin/python3.4 virt/virtname --no-site-packages 

のようなコマンドを使用して仮想環境を作成したいとPythonのバージョンを指定することができ、virtualenvのはpythonv2.7で環境を作成し、それゆえ、すべてのパッケージがフォルダに終わる君と述べた。

0

深く掘った後に溶液を見いだした。 これはWebfactionのカスタムですが、問題が発生した場合は、このようなインストールに適用できます。

Webfactionがのsitecustomize.pyファイルを設定しています。このファイルは/usr/local/lib/pythonX.Y/sitecustomize.pyにあり、~/lib/pythonX.Yの内容を追加します(条件付きでは、Pythonスクリプトを実行するディレクトリ下で作業している場合は、~/webappsの下の任意のpythonアプリケーションのコンテンツを条件に追加します)。

virtualenvのpython実行ファイルが異なっていても、ベースファイルの実行可能ファイルとして実行されるたびに、sitecustomize.pyファイルがロードされます。

ここでの回避策はありますか?あなたのvirtualenvに空のsitecustomize.pyを作成して、他のものを上書きする:

touch ~/.virtualenvs/yourvenv/lib/pythonX.Y/sitecustomize.py 

そしてこれはうまくいきます。 Take this as reference if you are stuck here like I was

:それぞれのケースのX.Yを、対応するバージョンに置き換えてください。また、覚えておいてください:あなたは共有ホスティングにいるので、ベースsitecustomize.pyを削除または編集することはできません。しかし、あなたが望むすべてのvirtualenvに対してこれを行う限り、オーバーライドはそれぞれのケースで機能します。

関連する問題