J'essaie d'écrire le setup.py
fichier d'installation pour un projet privé, qui a des dépendances publiques et privées. Les publics sont hébergés sur PyPI, tandis que les privés sont hébergés sur un serveur exécutant simplepypi .
Je souhaite que les dépendances publiques et privées soient résolues et récupérées lors de l'installation.
J'ai donc ajouté mes dépendances à 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'],
...
)
Je compile l'archive tar du package à l'aide de la commande python setup.py sdist
et l'installer dans un virtualenv activé à l'aide de pip install --verbose path/to/tarball.tar.gz
.
Cependant, les lignes de journal pip ne mentionnent nulle part mon serveur PyPI privé, et https://pypi.python.org/simple/ semble avoir été interrogé deux fois.
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...
Qu'est-ce que je rate?
Merci beaucoup!
il semble que vous n'ayez pas spécifié votre hôte comme le doc de simplepy a dit que vous devez configurer votre ~/.pipyrc
avec le bon nom d'hôte comme
Pour l'utiliser, exécutez "simplepypi". Vous pouvez télécharger des packages par:
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] ...
alors vous allez y télécharger votre package
python setup.py sdist upload -r local
et pourrait l'installer à partir de là
pip install -i http://127.0.0.1:8000/pypi <your favorite package>
J'espère que cela vous aidera.
dependency_links
est ignoré par défaut (au moins dans pip 9.0.1)
Pour qu'il atteigne votre serveur, vous devez ajouter --process-dependency-links
Je crois pip 10 apportera un nouveau mécanisme , mais pour l'instant cela a fait fonctionner pour moi
J'ai également dû mettre à jour dependency_links
pour inclure le nom du package, par exemple:
dependency_links=[
"http://internal-pyp:5678/simple/your_package_name"
]