26

setup.pyローカル ファイル システムに存在することがわかっている(編集可能な) ソース依存関係を指定することはできますか?

次のディレクトリ構造を考えてみましょう。これらはすべて単一の VCS リポジトリにあります。

projects
  utils
    setup.py
    ...
  app1
     setup.py
     ... # app1 files depend on ../utils
  app2
     setup.py
     ... # app2 files depend on ../utils

次のコマンドが与えられた場合:

cd projects
mkvirtualenv app1
pip install -e app1

「編集可能な」依存関係である「utils」を含む、app1 のすべての依存関係をインストールしたいと思います。同様に、app2 に対しても同じことをしたとします。

file://...URLのさまざまな組み合わせをすべて試してみましたがinstall_requiresdependency_links役に立ちませんでした。のような依存リンク URL を使用したいと思いますsrc+file://../utils。これにより、パッケージのソースがファイル システムのこの相対パスにあることが setuptools に伝えられます。これを行う方法はありますか?

4

3 に答える 3

9

私は setup.py で相対的なローカル依存関係を提供することができました:

setup(
    install_requires=[
        'utils @ file://localhost/%s/../utils/' % os.getcwd().replace('\\', '/'),
        ],
    )

しかし、誰かがより良い解決策を知っているかもしれません

于 2020-08-26T10:55:50.883 に答える
6

兄弟フォルダー内のモジュールに依存する必要があるという同じ問題がありました。https://caremad.io/2013/07/setup-vs-requirement/に出くわした後、解決策を見つけることができました

私は最終的に、必要なファイルを具体的に参照するためにrequirements.txtを作成し、すべてを次のようにインストールしました

pip install -r requirements.txt

要件.txt

-e ../utils                                                                                                                                                                    
-e .

setup.py には、utils を含む他のすべての依存関係があります。pip が app1 自体をインストールしようとすると、utils の依存関係が既に満たされていることを認識し、他の要件をインストールしている間にそれを渡します。

于 2014-11-26T02:58:28.110 に答える
-1

相互に関連する一連のプロジェクトで作業したい場合は、 を使用してそれらすべてをインストールし/setup.py developます。

誤って、または後で pip でインストールされたモジュールを編集可能にしたい場合は、ソースを複製しpython setup.py develop、既存のモジュールを置き換えてソースを複製します。

念のため、virtualenv の site-packages とパッケージ自体の参照を消去します。

于 2014-11-20T00:08:14.867 に答える