ソース配布 (sdist) を作成したいと考えています。これは、必要なパッケージに関して、開発用とターゲット プラットフォーム用に異なる必要があります。
より具体的には、Raspberry Pi (ターゲット プラットフォーム) 用にパッケージ化する場合opencv-python、OpenCV はそこのソースからビルドされているため、必要ありませんが、開発用 PC (Ubuntu) では が必要ですopencv-python。
このようないくつかのトリックに従って、--raspiパラメーターをに渡しようとしましたsetup.py:
install_requires = [
'opencv-python >= 4.1.1',
...
]
if "--raspi" in sys.argv:
install_requires = [req for req in install_requires if not req.startswith('opencv-python')]
sys.argv.remove("--raspi")
setup(
...,
install_requires=install_requires
)
を実行するpython3 setup.py sdist --raspiと、このアプローチは、生成された./dist/mypackage.tar.gz/mypackage/mypackage.egg-info/requires.txtものに含まれopencv-pythonなくなる程度まで機能します。
しかし、実行するpip3 install ./dist/mypackage.tar.gzと、次のようなエラーが表示されます。
ERROR: Could not find a version that satisfies the requirement opencv-python>=4.1.1 (from mypackage==0.1) (from versions: none)
これは、 に渡すときでも--install-option="--raspi"ありpip3 installます。どこかで読んだのは、setup.pyから実行するときに引数を再度 に渡す方法pipです。
setup.pyディストリビューション( )を手動で編集し、必要なパッケージから./dist/mypackage.tar.gz/mypackage/setup.py削除するとopencv-python、pip3 のインストールが機能します。
ビルドごとに異なるセットまたは要件を設定する他の方法はありますか? たとえばsetup.cfg、それぞれがパッケージのセットを指定する 2 つの異なるファイルを (どのように?) 使用しますか? 私はそれらにほとんど重複があるので、そのアプローチはあまり好きではありません。