アプリケーションを配布するためにsetup.pyを作成しています。このアプリケーションには、pipを介してインストールできるいくつかの依存関係があります。また、PyPIからインストールできないいくつかのカスタム依存関係もあります。
そこで、ディストリビューションに含まれるcustom_package_0.1.whl
を作成しました。これは、setup.pyがinstall_requires
からすべてをインストールした後に依存関係としてインストールする必要があります。
次のアプリ構造を想像してみてください。
my_app/
win_deps/custom_package_0.1.whl
my_app/
__init__.py
main.py
setup.py
setup.cfg
それ、どうやったら出来るの?
可能ですが、使用するsetuptoolsのバージョンがわかりません。手順:
setup.pyで
setup(
...,
install_requires=['my-package'],
dependency_links=[
# location to your Egg file
os.path.join(os.getcwd(), 'deps', 'my_package-1.0.0-py3.5.Egg')
]
)
重要なことは、あなたの場所がURLパターンテストに合格してはならず、Eggファイル名の構造が<package_name_with_no_hyphens>-<version>-<py_version>.Egg
である必要があるということです。
選択できるオプションがいくつかあります。
dependency_links
を指定します。my_app
パッケージ内に配置し、それをpackages
パラメーターにリンクすることができます。setuptools
apiを使用して、自分でパッケージをインストールすることです。Wiesiu_pの答えを拡張して、独自のsetup.py
を持つソースディレクトリにリンクすることで依存関係をインストールできます。
依存関係my-dependency
のソースファイルがあり、my-dependency
のルートに独自のsetup.py
があるとします。アプリケーションのsetup.py
:
setup(
...,
install_requires=['other-dependency','my-dependency'],
dependency_links=[
# location to your my-dependency project directory
''.join(['file:\\', os.path.join(os.getcwd(), 'path', 'to', 'my-dependency#Egg=my-dependency-1.0')])
]
)
これで、アプリケーションのpython setup.py install
を指定してsetup.py
を実行すると、my-dependency
がインストールされます。