--PyPI migre vers l'implémentation du référentiel de nouvelle génération (Warehouse
) depuis environ 2018, et ce code source est disponible sur GitHub ( https: // github.com / pypa / entrepôt
).
docker-compose
est fourni, et il est possible de démarrer l'environnement de développement relativement facilement.twine
à entrepôt
, il peut être utilisé comme environnement de test pour des opérations de package simples.
--PyPI fournit une instance de test (https: // test.pypi.org /
), mais c'est un serveur qui est exposé à l'extérieur.entrepôt
, il peut être utilisé dans un environnement privé et il n'est pas nécessaire d'enregistrer un compte, il est donc facile à utiliser comme bac à sable (peut être limité aux cas où vous souhaitez vérifier à quoi il ressemble dans PyPI) Je ne sais pas).Mémo de procédure lors de l'exécution avec CentOS 7.7
.
Installez docker / docker-compose.
Si vous regardez requirements / main.in dans le référentiel GitHub, c'est approprié (y compris ʻelasticsearch et
postgresql`). C'est une pile compliquée, mais elle est essentiellement résolue à l'intérieur du conteneur.
La procédure d'installation est [Entrepôt --Docs »Développement» Mise en route] (https://warehouse.readthedocs.io/development/getting-started/) explique.
Après avoir cloné le code source de github, exécutez la commande make build
pour générer un groupe d'images docker.
$ git clone https://github.com/pypa/warehouse.git
$ cd warehouse
$ make build
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
warehouse_web latest a78a164cbb8f 2 minutes ago 376MB
warehouse_worker latest a78a164cbb8f 2 minutes ago 376MB
<none> <none> 5768f70bcf35 2 minutes ago 676MB
<none> <none> c34b08b4ed16 5 minutes ago 1.16GB
warehouse_static latest 15277f26921d 6 minutes ago 1.14GB
python 3.7.3-slim-stretch 338ae06dfca5 6 months ago 143MB
node 8.15.1 8c51cec97ebf 9 months ago 895MB
Démarrez le groupe de conteneurs à partir de l'image générée avec la commande suivante.
$ make serve
Une fois le conteneur static
complètement démarré, exécutez la commande suivante (par exemple, dans un autre terminal).
(S'il n'est pas exécuté, une erreur se produira lors de l'accès à l'interface graphique Web car la base de données n'existe pas)
$ make initdb
Lorsque vous accédez au port 80 avec un navigateur, vous verrez un écran qui est presque le même que pypi
. Les principales différences sont les suivantes.
--Le paquet contenu dans le référentiel contient les données de test (l'instantané de test.pypi.org
avec les informations privées supprimées).
Vous trouverez ci-dessous un exemple d'exécution de REST-API (Endpoint pour l'acquisition d'informations sur les packages) avec curl
.
$ yum install jq
$ curl -s http://127.0.0.1/pypi/logmmse/1.2/json | jq .info.name
"logmmse"
$ curl -s http://127.0.0.1/pypi/logmmse/json | jq '.releases|keys'
[
"1.1",
"1.2"
]
L'enregistrement est possible en changeant simplement la destination de téléchargement à partir d'un client tel que «twine».
Voici un exemple de téléchargement de l'exemple de package généré par cookiecuter
.
Installez la bibliothèque de prérequis.
$ yum install python36 -y
$ pip3 install twine wheel
$ pip3 install cookiecutter
Générez un exemple de package en utilisant le modèle (ʻaudreyr / cookiecutter-pypackage). J'ai changé seulement
project_slug` pour éviter les conflits, mais les autres sont des valeurs par défaut.
$ cookiecutter https://github.com/audreyr/cookiecutter-pypackage
full_name [Audrey Roy Greenfeld]:
email [[email protected]]:
github_username [audreyr]:
project_name [Python Boilerplate]:
project_slug [python_boilerplate]: python_boilerplate_1234
project_short_description [Python Boilerplate contains all the boilerplate you need to create a Python package.]:
pypi_username [audreyr]:
version [0.1.0]:
use_pytest [n]:
use_pypi_deployment_with_travis [y]:
add_pyup_badge [n]:
Select command_line_interface:
1 - Click
2 - Argparse
3 - No command-line interface
Choose from 1, 2, 3 [1]:
create_author_file [y]:
Select open_source_license:
1 - MIT license
2 - BSD license
3 - ISC license
4 - Apache Software License 2.0
5 - GNU General Public License v3
6 - Not open source
Choose from 1, 2, 3, 4, 5, 6 [1]:
Générer la distribution des packages (source + binaire). Confirmez que le fichier est généré dans le dossier dist
.
$ cd python_boilerplate_1234
$ python3 setup.py sdist
$ python3 setup.py bdist_wheel
$ ls dist
python_boilerplate_1234-0.1.0-py2.py3-none-any.whl python_boilerplate_1234-0.1.0.tar.gz
Téléchargez le package avec twine upload
.
--Spécifiez l'hôte de entrepôt
dans --repository-url
( 127.0.0.1
dans cet exemple).
--Utilisez le compte de test entrepôt
(ʻewdurbin / mot de passe`) pour les informations d'identification requises pour le téléchargement.
- https://warehouse.readthedocs.io/development/getting-started/#logging-in-to-warehouse
$ twine upload --repository-url http://127.0.0.1/legacy/ dist/*
Uploading distributions to http://127.0.0.1/legacy/
Enter your username: ewdurbin
Enter your password:
Uploading python_boilerplate_1234-0.1.0-py2.py3-none-any.whl
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 9.28k/9.28k [00:05<00:00, 1.73kB/s]
Uploading python_boilerplate_1234-0.1.0.tar.gz
100%|███████████████████████████████████████████████████████████████████████████████████████████████████| 13.2k/13.2k [00:00<00:00, 25.6kB/s]
Lorsque le téléchargement est terminé normalement, vous pouvez vérifier le package à partir de l'interface graphique. Vous pouvez également consulter les informations du package à l'aide de REST-API.
$ curl -s http://127.0.0.1/pypi/python-boilerplate-1234/json | jq '.releases|keys'
[
"0.1.0"
]
Recommended Posts