2016-08-05 4 views
0

私はVirtualEnvをますます使用しようとしています。popen()などのPythonを呼び出すいくつかのプロジェクトに出くわしています。何らかの理由でスクリプトがサイトパッケージを正しく見つけられません。このようなプロジェクトのためにVirtualEnvは現在のディレクトリにシンボリックリンクを作成できますか?

、ディレクトリのルートに

ln -s env/lib/python2.7/site-packages/<package> <package> 

と同様に、サイトのパッケージをシンボリックリンクして動作するようです。

VirtualEnvでこれを行う方法はありますか、それともスクリプトをラップする必要がありますか?

+0

これらのシンボリックリンクが必要な場合は、何か問題があります。 *正確に*あなたがやっていることを見ることができるように[mcve]でそれを更新する質問をしてください。 – tripleee

+0

@ tripleeeいいえ、私はできません。これは巨大なレガシープロジェクトです。パッケージをルートディレクトリにシンボリックリンクする必要があります。もし私が通常の状況下でそれを再現できれば、おそらく私はこの質問をしていないだろう;) – Qix

答えて

0

私はあなたの正確な質問に答えているとは確信していません。パッケージの種類について明示されていないためです。しかし、VirtualEnvで一週間中働いていたので、私は他の場所で(アナコンダのために)住んでいる多くのモジュールを使用しなければならなかったので、私はそれをやります。

私が行ってきたことは、環境を作成してコマンドラインから起動すると、パッケージを仮想環境にピップインストールすることです。使用したいモジュールがすでにマシンに存在するかどうかを環境に認識させるだけなので、元のインストールよりもはるかに高速です。

私は新しい環境でcmdから再実行できるように、必要なすべてのモジュールを持つテキストファイルを作成しました。すべてを一度にインストールします。

VirutalEnv内のAnaconda &内のモジュールは、非アクティブ化と再アクティブ化後も残ります。しかし、私はVirtualEnvがpython 2.7のフリースタンディングバージョンで動作するかどうかはわかりません。

0

短い答えはいいえ、いいえ、virtualenvツール自体がパッケージの依存関係を管理する方法はありません。それは通常、pipのようなツールに依存します。

http://docs.python-guide.org/en/latest/dev/virtualenvs/

あなたがこの問題に

が発生しているのはなぜこれがあなたのenvが作成された方法によって異なり - githubのクローン対アップZIPファイルを、githubのレポに含まれているもの、例えばそれはあなたが追加提案@tripleee具体的な情報がないとenv/lib内容

が含まれなかった、それは正確な答えを示唆するのは難しいが、あなたがvirtualenv envを呼び出して新しいvirtualenvのを作成すると...背中、第一原理に

を行きます、あなたはENVフォルダ(例:env/app.py)にあなたの.pyファイルをコピーした場合、それはenvピップ、setuptoolsのとフォルダと以下のフォルダ

env/bin 
env/include 
env/lib/python2.7/site-packages/ 

内に設置された(最近)のホイールを作成し、あなたのアプリがに依存しています外部包装それが失敗すると、/site-packages/フォルダ内のパッケージを見つけることができませんでした。

/lib/の内容(ひどい考えです)を含むgitリポジトリからコピーをクローンした場合は、リポジトリにコミットされたパッケージがすべて表示されます。したがって、あなたのアプリが望む外部パッケージがレポ内にない場合、それは失敗します。

あなたのシンボリックリンクコードは、virtualenvフォルダから自分のローカルパッケージフォルダへのシンボリックリンクを実行しているようです...これが動作した場合、virtualenvを正しく使用していない可能性があります最初は実際にはvirtualenvではなくローカルマシンでアプリを実行しています。

それはどのように「スクリプト」へ

パッケージとの依存関係を管理するための典型的なアプローチは、上記のリンクで提案されたまさにである、pip freeze > requirements.txtpip install -r requirements.txtのコンボを使用することです。

あなたが依存しているパッケージがPyPi上にない場合(これはおそらくそうだと推測しています)、これを管理できる他の方法があります。

http://docs.python-guide.org/en/latest/shipping/packaging/

関連する問題