3

複数のプロジェクトで使用したいサイトのフレームワークがありますが、フレームワークを PyPi に送信したくありません。setup.py に特定の場所からフレームワークをインストールするように指示できる方法はありますか?

ここに私の現在のsetup.pyがあります

from setuptools import setup

setup(
    name='Website',
    version='0.2.1',
    install_requires=[
        'boto>=2.6',
        'fabric>=1.4',
        'lepl>=5.1',
        'pygeoip>=0.2.4',
        'pylibmc>=1.2.3',
        'pymongo>=2.2',
        'pyyaml>=3.1',
        'requests>=0.12',
        'slimit>=0.7.4',
        'thrift>=0.8.0',
        'tornado>=2.3',
    ],
)

これらの依存関係は、実際には私のフレームワークのすべての依存関係であるため、何らかの方法で含めることができれば、ここにリストされているフレームワークしか持つことができません。

4

1 に答える 1

2

すべての要件が (PyPI 上で) 公開されているように見えますが、特定のバージョンは必要なく、「十分に新しい」だけです。2016 年には、誰もが の最近っぽいバージョンを持っていると期待できるのでpip、何もする必要はありません。pip install .ソースディレクトリなどからだけの場合pip install git+https://url/to/packageは、依存関係の最新バージョンをネットから引き出すだけです。パッケージが PyPI 上にないという事実は、pip がその依存関係を見つけるのを止めることはありません。

または、それらをすべてローカルに隠したい場合は、ローカル PyPI インデックスを設定できます。その場合、パッケージを同じローカル インデックスにプッシュし、そこからインストールする方がおそらく簡単でしょう。

さらに複雑なことが必要な場合は、要件ファイルで処理できます。

特に、チームのローカル インデックスが設定されていない可能性がある組織内の他の人にパッケージを配布する必要がある場合、または何らかの理由でそもそもローカル インデックスを設定できない場合は、すべての要件ファイル内の必要な情報、または、より適切な場合は、パッケージのインストールに使用されるコマンド ライン (easy_installまたは古いバージョンのpip.

ドキュメントには完全な詳細が記載されており、このブログ投稿では非常にうまく説明されていますが、短いバージョンは次のとおりです。

  • ローカル PyPI インデックスがある場合は、--extra-index-url=http://my.server/path/to/my/pypi/.

  • パッケージをドロップできる HTTP サーバーがあり、サーバーで「自動インデックス ディレクトリ コンテンツ」オプションを有効にできる場合は、--find-links=http://my.server/path/to/my/packages/.

  • ローカル ファイル (または SMB/AFP/などのファイル共有) を使用する場合は、すべてのローカル パッケージへのリンクだけを含む単純な HTML ファイルを作成し、--find-links=file:///path/to/my/index.html.

繰り返しますが、これらは「このパッケージをインストールするには、これを実行します」(またはcurl | shインストール スクリプト) のコマンド ラインで実行できますが、通常は要件ファイルに配置するだけです。その場合は、オプションごとに値を 1 つだけ使用し (たとえば、インデックスを 2 つ追加する場合は、パラメーターを 2 つ追加--extra-index-url)、それぞれを別の行に配置してください。

要件ファイルでは、各パッケージの特定のバージョンを指定することもできるため、開発およびテストしたのと同じコードを使用してデプロイしていることを確認できます。これは、このような状況で役立つことがよくあります。

于 2012-11-13T01:40:42.913 に答える