4

作業中のパッケージがいくつかあり、setup.pyスクリプト間でコードを共有したいと思います。これを行うための良い方法はありますか、それともコードの重複が私の唯一の選択肢ですか?

4

1 に答える 1

8

通常setup.py、個別のパッケージを配布するためのエントリ ポイントです。そのため、これらのパッケージ間でコードを共有することは困難です。

を使用するsetuptools(または forkを使用するdistribute)setup.py場合は、エントリを使用してパッケージをインストールするときにインストールする必要があるパッケージを指定できます。setup_requires

残念ながら、あなたsetup.pyが最初に実行されます。行が解析されるとすぐに、setup_requiresそこにリストされている追加のパッケージがローカルにインストールされますが、これでは遅すぎる場合があります。

回避策は、エントリを定義する別のDistributionオブジェクトを呼び出す前に作成することです。setupsetup_requires

import setuptools

setuptools.dist.Distribution(dict(setup_requires='yoursharedsetuppackage'))
# `setup_requires` is parsed and acted upon immediately; from here on out
# the yoursharedsetuppackage is installed and importable.

import yoursharedsetuppackage

setup(...)
于 2012-08-21T19:40:32.667 に答える