--PyPI wird seit etwa 2018 auf die Repository-Implementierung der nächsten Generation (Warehouse
) migriert. Dieser Quellcode ist auf GitHub verfügbar ( https: // github.com / pypa / warehouse
).
https: // test.pypi.org /
), aber es ist ein Server, der nach außen ausgesetzt ist.Prozedur-Memo bei Ausführung mit CentOS 7.7
.
Installieren Sie Docker / Docker-Compose. Wenn Sie sich Anforderungen / main.in im GitHub-Repository ansehen, ist dies angemessen (einschließlich "elasticsearch" und "postgresql"). Es ist ein komplizierter Stapel, der jedoch im Container gelöst wird.
Der Installationsvorgang lautet [Warehouse --Docs »Entwicklung» Erste Schritte] (https://warehouse.readthedocs.io/development/getting-started/) erklärt.
Führen Sie nach dem Klonen des Quellcodes von github den Befehl make build
aus, um eine Docker-Image-Gruppe zu generieren.
$ 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
Starten Sie die Containergruppe aus dem generierten Image mit dem folgenden Befehl.
$ make serve
Nachdem der statische Container vollständig gestartet wurde, führen Sie den folgenden Befehl aus (z. B. in einem anderen Terminal). (Wenn nicht ausgeführt, tritt beim Zugriff auf die Web-GUI ein Fehler auf, da die Datenbank nicht vorhanden ist.)
$ make initdb
Wenn Sie mit einem Browser auf Port 80 zugreifen, wird ein Bildschirm angezeigt, der fast dem von "pypi" entspricht. Die Hauptunterschiede sind wie folgt.
test.pypi.org
mit den entfernten privaten Informationen).Unten finden Sie ein Beispiel für die Ausführung der REST-API (Endpunkt zum Abrufen von Paketinformationen) mit "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"
]
Die Registrierung ist möglich, indem Sie einfach das Upload-Ziel von einem Client wie "Twine" wechseln.
Das Folgende ist ein Beispiel für das Hochladen des von cookiecuter
generierten Beispielpakets.
Installieren Sie die vorausgesetzte Bibliothek.
$ yum install python36 -y
$ pip3 install twine wheel
$ pip3 install cookiecutter
Generieren Sie ein Beispielpaket mit der Vorlage (audreyr / cookiecutter-pypackage
). Ich habe nur "project_slug" geändert, um Konflikte zu vermeiden, aber die anderen sind Standardeinstellungen.
$ 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]:
Generieren Sie die Verteilung von Paketen (Quelle + Binär). Stellen Sie sicher, dass die Datei im Ordner "dist" generiert wurde.
$ 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
Laden Sie das Paket mit "Schnur-Upload" hoch.
warehouse
in --repository-url
an (in diesem Beispiel 127.0.0.1
).
--Verwenden Sie das "Warehouse" -Testkonto ("ewdurbin / password") für die zum Hochladen erforderlichen Anmeldeinformationen.
$ 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]
Wenn der Upload normal abgeschlossen ist, können Sie das Paket über die GUI überprüfen. Sie können auch mit der REST-API auf die Paketinformationen verweisen.
$ curl -s http://127.0.0.1/pypi/python-boilerplate-1234/json | jq '.releases|keys'
[
"0.1.0"
]