14

私はbuildoutとvirtualenvの組み合わせをいじって、再現可能なビルドを実行できるようにするPythonで分離された開発環境をセットアップしています。

virtualenvをビルドアウトに統合できるビルドアウトのレシピがあります。

 tl.buildout_virtual_python

これにより、私のbuildout.cfgは次のようになります。

[buildout]
develop = .
parts = script
        virtualpython


[virtualpython]
recipe = tl.buildout_virtual_python
headers = true
executable-name = vp
site-packages = false

[script]
recipe = zc.recipe.egg:scripts
eggs = foo
python = virtualpython

これにより、2つの実行可能ファイルが./bin/にデプロイされます。

vp
script

vpを実行すると、期待どおりにインタラクティブな分離されたpythonダイアログが表示されます(システムからパッケージをロードできません)。私が今期待するのは、私が走ったら

./bin/script 

分離されたPythonインタープリターが使用されていること。しかし、そうではなく、「vp」のように分離されていません(つまり、システムレベルからライブラリをインポートできます)。しかし、私は実行できます:

./bin/vp ./bin/script

これにより、必要に応じて分離された環境でスクリプトが実行されます。しかし、コマンドをチェーンせずにこれを指定する方法が必要です。そうしないと、ビルドアウトは私が望んでいた問題の半分しか解決しません:)

ご協力いただきありがとうございます!パトリック

4

4 に答える 4

8

virtualenv は必要ありません。buildout は、virtualenv と同様に、分離された環境を既に提供しています。

例として、buildout が bin ディレクトリに生成するファイルを見てください。次のようなものがあります。

import sys
sys.path[0:0] = [
     '/some/thing1.egg',
     # and other things
     ]

そのため、sys.pathbuildout がパス上に置きたいもの、つまり virtualenv と同じ分離方法に完全に置き換えられます。

于 2009-12-03T20:28:31.910 に答える
3

ubuntu サーバーでブートストラップを使用して buildout を実行する際に問題が発生したため、virtualenv と buildout を一緒に使用します。単にvirualenvを作成し、そこにbuildoutをインストールしてください。この方法では、virtualenv のみをシステムにインストールする必要があります (理論上は1 )。

$ virtualenv [options_you_might_need] virtual
$ source virtual/bin/activate
$ pip install zc.buildout
$ buildout -c <buildout.cfg>

また、buildout にスクリプトを virtual/bin/ ディレクトリに配置するように指示します。これにより、スクリプトは に表示され$PATHます。

[buildout]
bin-directory = ${buildout:directory}/virtual/bin
...

1: 実際には、コンパイルが必要なものを、コンパイルが必要なシステム レベルにエッグする必要があるでしょう。mysql や memcache のような卵。

于 2012-07-17T20:26:01.910 に答える
0

私はそのレシピを使ったことはありませんが、最初に試すのは次のとおりです。

[buildout]
develop = .
parts = script
        virtualpython


[virtualpython]
recipe = tl.buildout_virtual_python
headers = true
executable-name = vp
site-packages = false

[script]
recipe = zc.recipe.egg:scripts
eggs = foo
python = virtualpython
interpreter = vp

それでも問題が解決しない場合は、通常、スクリプト (この場合は vp とスクリプト) をテキスト エディターで開き、それらが使用している Python パスを確認できます。Windows を使用している場合、通常は<script_name>-script.py. この場合、それは vp-script.py と script-script.py になります。

于 2009-10-14T16:56:28.890 に答える