2016-10-20 5 views
0

私はsetuptoolsを使用してPythonの卵を作ることができます:python setup.py bdist_egg。理論的には、私はsetup.pyファイルを使って、インストールされているすべてのパッケージに対してこれを実行できるはずです。 virtualenv仮想python環境全体をpython eggにカプセル化することは可能ですか?私は卵にvirtualenvを作ることができます

+0

を使うのでしょうか? –

答えて

1

あなたはこれを行うために管理することができたとしても、あなたが期待するように、それは動作しませんいくつかの理由

のためにこれを行うべきではありません。 Pythonの卵が追加の名前空間を追加しないので、ユーザがあなたの卵の中のパッケージの1つを既にインストールしていた場合、それらは衝突します。

また、Pythonの卵も一種のものです。バイナリディストリビューションを作成する場合は、最新のpython wheelsを使用してください。

依存関係を持つプロジェクトをお持ちの場合は、setup.pyに依存関係を宣言するだけでpipがインストールされます。 PyPiに存在しない依存関係がある場合や、パッケージの非常に特殊なバージョンが必要な場合は、それらのパッケージをパッケージ内のサブパッケージとして含めてください。あなたのコード内

/my_package 
    __init__.py 
    /libs 
     __init__.py 
     /non_pypi_package 
     /legacy_package 

そして、代わりに

import non_pypy_package 

としてそれらをインポートするの、あなたのプロジェクトのファイル構造のレイアウトは何

from my_package.libs import non_pypi_package 
+0

私は卵を使っているのですが、私はPythonパッケージの依存関係であるコンパイル済みのC/Fortranパッケージを格納することができます。私はまだこれを行うことができる方法はありますか? – kilojoules

+0

'' setup'関数の['package_data'](https://docs.python.org/2/distutils/setupscript.html#installing-package-data)引数を使用して実行できます。プロジェクトの構造の詳細については、正確なコマンドを追加して追加することができます。 –

+0

私はあなたが記述している方法でpackage_dataをどのように使うことができるのかよくわかりません。この前の回答は期待通りではありませんでした:http://stackoverflow.com/a/14159430/3474956。現代のPythonの卵と同じようには見えません。 – kilojoules

関連する問題