Setuptoolsとvirtualenvを使い始めたばかりです。私のパッケージには、GitHubからのみ入手可能な最新のpython-gearmanが必要です。 PyPIにあるpython-gearmanバージョンは古いものです。 Githubソースはsetuptoolsと互換性があります。つまり、setup.pyなどがあります。PyPIで古いバージョンを探してインストールする代わりに、setuptoolsに新しいバージョンをダウンロードしてインストールさせる方法はありますか?
参考までに、新しいpython-gearmanは http://github.com/mtai/python-gearman です
重要なのは、easy_installにパッケージをダウンロードできる場所を伝えることです。この特定のケースでは、URL http://github.com/mtai/python-gearman/tarball/master で見つけることができます。ただし、easy_installは取得するURLを確認するだけでは判断できないため、このリンク自体は機能しません。
代わりに http://github.com/mtai/python-gearman/tarball/master#Egg=gearman-2.0.0beta に変更すると、easy_installはパッケージ名とそのバージョンを識別できるようになります。
最後の手順は、パッケージのdependency_linksにURLを追加することです。例:
setup(
...
dependency_links = ['http://github.com/mtai/python-gearman/tarball/master#Egg=gearman-2.0.0beta']
)
パッケージがインストールされると、easy_installはそのURLからダウンロード可能な「gearman 2.0.0beta」があることを検出し、「gearman> = 2.0.0beta」を指定すると、PyPI上のものよりも喜んで選択します。あなたの依存関係で..
(通常、この種のことを行う方法は、ダウンロード可能なソースへのリンクをPyPIページに含めることです。この場合、ギアマンパッケージの作成者が上記のようなリンクを含めていれば、すでに設定されています。通常、開発バージョンを「myproject-dev」でマークし、「myproject> = somever、== dev」の要件を使用するため、somever以上のパッケージがない場合、easy_installはリリースをチェックアウトまたはダウンロードします。)
pip
を使用する場合は、--process-dependency-links
を指定する必要があります。依存性リンクの処理は廃止され、将来のリリースで削除されることに注意してください。
pip install protocol+location[@tag][#Egg=Dependency]
形式を使用して、pipを使用してソースから直接インストールできます。
pip install git+https://github.com/username/repo.git
pip install git+https://github.com/username/repo.git@MyTag
pip install git+https://github.com/username/repo.git@MyTag#Egg=ProjectName
pip install hg+https://hg.myproject.org/MyProject/
pip install svn+svn://svn.myproject.org/svn/MyProject
pip install bzr+http://bzr.myproject.org/MyProject/trunk
次のプロトコルがサポートされています:[+git, +svn, +hg, +bzr]
@tag
では、チェックアウトする特定のバージョン/タグを指定できます。
#Egg=name
を使用すると、他のプロジェクトの依存関係としてプロジェクトを指定できます。
順序は常に@tag#Egg=name
でなければなりません。
プロトコルをSSH(ssh://
)に変更し、適切なユーザー(git@
)を追加することにより、プライベートリポジトリからインストールすることもできます。
git+ssh://[email protected]/username/my_private_repo
ユーザー名/パスワードを使用してプライベートリポジトリからインストールすることもできます。
git+https://<username>:<password>@github.com/<user>/<repo>.git
Githubは、循環可能な personal OAuth_ tokens を作成する機能を提供します
git+https://<oauth token>:[email protected]/<user>/<repo>.git
requirements.txt
は、プロジェクトの依存関係を指定するために使用されます。
requirements.txt
package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git
これらはパッケージとともに自動的にインストールされないため、コマンドpip -r requirements.txt
を使用してインストールする必要があります。
要件ファイルには、他の要件ファイルを含めることができます。
requirements-docs.txt
sphinx
-r requirements-dev.txt
requirements-dev.txt
some-dev-tool
-r requirements.txt
requirements.txt
package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git
要件ファイルは、次のコマンドを使用して、setup.py
で指定された依存関係をインストールできます。
-e .
setup.py
は、上記と同じ構文を使用してリポジトリからインストールすることもできますが、 this answer で説明されているdependency_links
値を使用します。
https://pip.pypa.io/en/latest/user_guide.html#installing-packageshttps://pip.pypa.io/en/latest/reference/pip_install。 html
同じことをしなければならなかったので、pip
の--process-dependency-links
は このコメント に従ってpip
19.0で削除される予定であるため、これを行う別の方法を見つけました。 =。
pip
18.1には次の機能が含まれます
PEP 508 URL要件を依存関係として使用できるようにします。
PEP 508の 説明 から、そのようなURL依存関係の構文は次のようになります。
最小限のURLベースのルックアップ:
pip @ https://github.com/pypa/pip/archive/1.3.1.Zip#sha1=da9234ee9982d4bbb3c72346a6de940a148ea686
したがって、setup.py
では次のようになります
setup(
...
install_requires = [
...
'python-gearman @ https://github.com/mtai/python-gearman/archive/master.Zip'
...
]
)
リンクはアーカイブファイルであり、説明されているようにリポジトリの特定のリリースまたはブランチである可能性があります この回答では 。また、他のリポジトリホストと連携するための回答を参照してください。
私の知る限り、依存関係を更新する最も簡単な方法は、ディレクトリからパッケージをインストールするときにpip install -I .
を使用することです。
Vanilla setuptools
は、gitリポジトリからの直接ダウンロードをサポートしていませんが、次のようなDownload Sourceリンクを使用できます。
easy_install http://github.com/mtai/python-gearman/tarball/master