パブリックとプライベートの両方の依存関係があるプライベートプロジェクトのsetup.py
インストールファイルを書き込もうとしています。パブリックのものはPyPIでホストされていますが、プライベートのものは simplepypi を実行しているサーバーでホストされています。
インストール中にパブリックとプライベートの両方の依存関係を解決してフェッチしてほしい。
したがって、依存関係をsetup.py
に追加しました。
setup(
...
install_requires = [
# public dependencies
'argparse==1.2.1',
'beautifulsoup4==4.1.3',
'lxml==3.1.0',
'mongoengine==0.8.2',
'pymongo==2.5.2',
'requests==1.1.0',
'Cython==0.18',
# private dependencies
'myprivatepackage1',
'myprivatepackage2'
],
dependency_links=['http://pypi.myserver.com/packages'],
...
)
コマンドpython setup.py sdist
を使用してパッケージtarballをビルドし、pip install --verbose path/to/tarball.tar.gz
を使用してアクティブ化されたvirtualenvにインストールします。
ただし、pipログの行には私のプライベートPyPIサーバーはどこにも記載されておらず、 https://pypi.python.org/simple/ が2回照会されたようです。
Running setup.py Egg_info for package from file:///home/b/code/mapado/mypackage/dist/mypackage-0.5.1.tar.gz
running Egg_info
creating pip-Egg-info/mypackage.Egg-info
writing requirements to pip-Egg-info/mypackage.Egg-info/requires.txt
writing pip-Egg-info/mypackage.Egg-info/PKG-INFO
writing top-level names to pip-Egg-info/mypackage.Egg-info/top_level.txt
writing dependency_links to pip-Egg-info/mypackage.Egg-info/dependency_links.txt
writing manifest file 'pip-Egg-info/mypackage.Egg-info/SOURCES.txt'
warning: manifest_maker: standard file '-c' not found
reading manifest file 'pip-Egg-info/mypackage.Egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'pip-Egg-info/mypackage.Egg-info/SOURCES.txt'
Downloading/unpacking myprivatepackage (from mypackage==0.5.1)
Could not fetch URL https://pypi.python.org/simple/myprivatepackage/: HTTP Error 404: Not Found (myprivatepackage does not have any releases)
Will skip URL https://pypi.python.org/simple/myprivatepackage/ when looking for download links for myprivatepackage (from mypackage==0.5.1)
Could not fetch URL https://pypi.python.org/simple/myprivatepackage/: HTTP Error 404: Not Found (myprivatepackage does not have any releases)
Will skip URL https://pypi.python.org/simple/myprivatepackage/ when looking for download links for myprivatepackage (from mypackage==0.5.1)
Could not find any downloads that satisfy the requirement myprivatepackage (from mypackage==0.5.1)
Cleaning up...
何が欠けていますか?
どうもありがとうございました!
simplepy のドキュメントのようにホストを指定しなかったようですが、~/.pipyrc
のような適切なホスト名
それを使用するには、「simplepypi」を実行します。次の方法でパッケージをアップロードできます。
Modify your ~/.pypirc so it looks like: [distutils] index-servers = pypi local [local] username: <whatever> password: <doesn't matter, see above> repository: http://127.0.0.1:8000 [pypi] ...
次にパッケージをアップロードします
python setup.py sdist upload -r local
そこからインストールできます
pip install -i http://127.0.0.1:8000/pypi <your favorite package>
これがお役に立てば幸いです。
dependency_links
はデフォルトで無視されます(少なくともpip 9.0.1では)
サーバーに連絡するには、--process-dependency-links
を追加する必要があります
私は信じています pip 10は新しいメカニズムをもたらす ですが、今のところこれでうまくいきます
また、パッケージ名を含めるようにdependency_links
を更新する必要がありました。次に例を示します。
dependency_links=[
"http://internal-pyp:5678/simple/your_package_name"
]