[PYTHON] PyPI-Registrierungsverfahren für diejenigen, die ihr PyPI-Debüt geben möchten

Einführung

Ich habe kürzlich mein PyPI-Debüt gegeben. Daher werde ich ein Registrierungsverfahren für diejenigen schreiben, die daran denken, ein PyPI-Debüt für denselben Zweck zu geben.

Was ist PyPI? Schmeckt es?

Es scheint eine Abkürzung für Python Package Index zu sein. Als Dienst zum Verwalten von Python-Paketen kann jeder ein Paket registrieren. Die hier registrierten Pakete können mit `pip install `installiert werden. Übrigens scheint es Pipey Eye zu lesen.

Paketvorbereitung

Bereiten Sie zunächst das zu registrierende Paket vor. Dieses Mal werde ich als Beispiel ein Paket namens "pypipkg" erstellen. Die Dateistruktur sieht so aus. Bereiten Sie die für die Registrierung von PyPI erforderlichen Informationen wie setup.py direkt unter dem Verzeichnis pypipkg vor und platzieren Sie das Quellverzeichnis pypipkg.

pypipkg $ tree
├── MANIFEST.in
├── README.rst
├── pypipkg
│   ├── __init__.py
│   ├── dependency.py
│   ├── scripts
│   │   ├── __init__.py
│   │   └── command.py
│   └── verify.py
├── requirements.txt
└── setup.py

Die zum ersten Mal vorbereitete Konfiguration ist wie oben. Später werden die erforderlichen Verzeichnisse für pip während des Registrierungsprozesses hinzugefügt.

pypipkg $ tree
├── MANIFEST.in
├── README.rst
├── dist
│   ├── pypipkg-1.0.0.tar.gz
│   ├── pypipkg-1.0.1.tar.gz
│   ├── pypipkg-1.0.2.tar.gz
│   ├── pypipkg-1.0.3.tar.gz
│   └── pypipkg-1.0.4.tar.gz
├── pypipkg
├── pypipkg.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   ├── entry_points.txt
│   ├── requires.txt
│   └── top_level.txt
├── requirements.txt
└── setup.py

Erstellen Sie setup.py

Setup.py ist wichtig für die PyPi-Registrierung. Basierend auf den Informationen in dieser setup.py kann es als Paket erkannt und registriert werden. Wahrscheinlich am schwierigsten, setup.py mit PyPI-Registrierung zu erstellen.

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals
import os

from setuptools import setup, find_packages

try:
    with open('README.rst') as f:
        readme = f.read()
except IOError:
    readme = ''

def _requires_from_file(filename):
    return open(filename).read().splitlines()

# version
here = os.path.dirname(os.path.abspath(__file__))
version = next((line.split('=')[1].strip().replace("'", '')
                for line in open(os.path.join(here,
                                              'pypipkg',
                                              '__init__.py'))
                if line.startswith('__version__ = ')),
               '0.0.dev0')

setup(
    name="pypipkg",
    version=version,
    url='https://github.com/user/pypipkg',
    author='kinpira',
    author_email='[email protected]',
    maintainer='kinpira',
    maintainer_email='[email protected]',
    description='Package Dependency: Validates package requirements',
    long_description=readme,
    packages=find_packages(),
    install_requires=_requires_from_file('requirements.txt'),
    license="MIT",
    classifiers=[
        'Programming Language :: Python :: 2',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'License :: OSI Approved :: MIT License',
    ],
    entry_points="""
      # -*- Entry points: -*-
      [console_scripts]
      pkgdep = pypipkg.scripts.command:main
    """,
)

Auf den ersten Blick scheint es, als würden Sie viele schwierige Dinge tun, aber das Wichtigste ist in setup (). Es ist in Ordnung, wenn Sie jedes Einstellungselement hier schreiben. Die im obigen Beispiel setup.py angegebenen Elemente lauten wie folgt.

  install_requires=[
        "hoge",
  ],

【wiki: MIT】

Zusammenfassend ist die MIT-Lizenz die folgende Lizenz.

  1. Jeder kann diese Software kostenlos und unbegrenzt nutzen. Der Copyright-Hinweis und dieser Lizenzhinweis müssen jedoch auf allen Kopien oder wichtigen Teilen der Software erscheinen.
  2. Der Autor oder Inhaber des Urheberrechts ist nicht für die Software verantwortlich.

Diese Informationen werden auch in Python-Dokumentation erläutert.

Erstellt von MANIFEST.in

Nach dem Erstellen von setup.py verwenden wir dieses Mal die Methode zum Angeben von require.txt. Erstellen Sie daher eine "MANIFEST.in" -Datei. MANIFEST.in kann in das Paket aufgenommen werden, indem Sie es angeben, wenn Sie absichtlich Dateien einschließen möchten, die nicht im Python-Zielverzeichnis des Pakets enthalten sind.

Übrigens, wenn anforderungs.txt usw. wie zu diesem Zeitpunkt angegeben werden und MANIFEST.in nicht vorhanden ist, tritt ein Fehler auf, da anforderungs.txt zum Zeitpunkt der Installation nicht vorhanden ist.

Pakettests

Wenn Sie zum Verpacken bereit sind, verpacken und testen Sie zunächst vor Ort. Wenn Sie lokal testen möchten, können Sie es mit dem Befehl `` `python setup.py Develop``` verpacken und in Site-Paketen installieren.

$ cd ~/pypipkg
$ python setup.py develop

Auf diese Weise können Sie es beim Import in Ihr Python-Projekt aufrufen. Der von entry_points in setup.py erstellte Befehl kann auch lokal verwendet werden, sodass Sie problemlos überprüfen können, ob er als Paket funktioniert.

Registrieren Sie sich bei TestPyPI

Durch die Registrierung bei TestPyPI vor der Registrierung beim Produktions-PyPI können Sie eine Reihe von Vorgängen ausführen, z. B. die Anzeige der PyPI-Seite überprüfen und wie bei der Produktion installieren.

Zunächst müssen Sie ein Konto wie in der tatsächlichen Produktion registrieren, also erstellen Sie ein Konto.

↓ Die TestPyPI-Seite ist wie folgt als TESTING SITE geschrieben. スクリーンショット 2016-06-07 11.59.27.png

pypirc

Bei Verwendung von TestPyPi muss wie unten gezeigt .pypirc im HOME-Verzeichnis erstellt werden. (Referenz)


$ vim ~/.pypirc

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password

[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password

TestPyPI register Sobald Sie pypirc haben, gehen Sie direkt unter das Paket, in dem sich setup.py befindet, und verwenden Sie den Befehl register, um die Paketinformationen in TestPyPI zu registrieren.

python setup.py register -r https://testpypi.python.org/pypi

TestPyPI search Nachdem Sie die Informationen bei register registriert haben, können Sie sie anscheinend mit dem Suchbefehl überprüfen. (In meinem Fall hat es aus irgendeinem Grund nicht funktioniert)

pip search --index https://testpypi.python.org/pypi pypipkg

TestPyPI upload Der Befehl register registriert nur die Paketinformationen, aber der gzip (Quellcode) des Pakets selbst wurde noch nicht hochgeladen, sodass die Registrierung erst abgeschlossen ist, nachdem der Stoff mit dem Befehl upload hochgeladen wurde.

python setup.py sdist upload -r https://testpypi.python.org/pypi

TestPyPI install Nach dem Hochladen können Sie mit `pip install `installieren.

pip install --index-url https://testpypi.python.org/simple/ pypipkg

Ich denke, Sie haben es erfolgreich installiert. Sobald Sie dies bestätigt haben, müssen Sie es nur noch auf dem tatsächlichen PyPI veröffentlichen.

Registrieren Sie sich für die Produktion PyPI

Lassen Sie es uns in der Produktion PyPI veröffentlichen.

Sie müssen auch hier ein Konto registrieren, also erstellen Sie ein Konto.

https://pypi.python.org/

Sobald Sie ein Konto haben, werden wir uns registrieren. Das Verfahren ist das gleiche wie für TestPyPI.

PyPI register Registrieren Sie sich zunächst mit dem Befehl register.

python setup.py register

PyPI upload Verwenden Sie als Nächstes den Befehl upload, um die Entität hochzuladen.

python setup.py sdist upload

PyPI-Site-Bestätigung

Ja! Nachdem die Registrierung abgeschlossen ist, überprüfen wir sie auf der PyPI-Site. So was スクリーンショット 2016-06-08 12.59.10.png

Es ist perfekt veröffentlicht, so dass Sie es jetzt mit `pip install `installieren können!

Zusammenfassung

Zuerst dachte ich, dass setup.py problematisch ist, aber als ich es geschrieben habe, war die Registrierungsarbeit danach sehr einfach. Außerdem ist die Testumgebung richtig vorbereitet, sodass ich mein PyPI-Debüt mit weniger Widerstand als erwartet geben konnte.

Recommended Posts

PyPI-Registrierungsverfahren für diejenigen, die ihr PyPI-Debüt geben möchten
Ärgerliche Punkte für diejenigen, die Ansible vorstellen möchten
Für diejenigen, die Python mit vim schreiben möchten
Für diejenigen, die mit TensorFlow2 maschinelles Lernen beginnen möchten
Referenz Referenz für diejenigen, die mit Rhinoceros / Grasshopper codieren möchten
Lose Artikel für diejenigen, die mit der Verarbeitung natürlicher Sprache beginnen möchten
Python-Technik für diejenigen, die Anfänger loswerden wollen
Ein Memo für diejenigen, die eine schnelle Socket-Kommunikation mit Netcat wünschen
Ein modernes Verfahren zum Erstellen von Umgebungen für diejenigen, die sofort mit Python beginnen möchten
[Kurzer Satz] easygui für diejenigen, die sehr einfach eine einfache GUI mit Python verwenden möchten
Ich habe Airbnb-Daten für diejenigen analysiert, die in Amsterdam bleiben möchten
Ich möchte Matplotlib zu einem dunklen Thema machen
Ich möchte ein Spiel mit Python machen
Treten Sie Azure mit Go ~ bei Für diejenigen, die Azure mit Go ~ starten und kennenlernen möchten
Für diejenigen, die Excel VBA lernen und mit Python beginnen möchten
5 Gründe, warum die Verarbeitung für diejenigen nützlich ist, die mit Python beginnen möchten
Der erste Schritt des maschinellen Lernens ~ Für diejenigen, die versuchen möchten, mit Python zu implementieren ~
PostgreSQL - Für Sie, die mit hoher Geschwindigkeit EINFÜGEN möchten
Ich möchte ein beliebtes Paket auf PyPi finden
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Umgebungskonstruktion für diejenigen, die Python einfach mit VSCode (für Mac) lernen möchten
Wenn Sie in der for-Anweisung plt.save möchten
Für diejenigen, die Bilder so schnell wie möglich nebeneinander mit matplotlib von Python anzeigen möchten
[Für diejenigen, die TPU verwenden möchten] Ich habe versucht, die Tensorflow Object Detection API 2 zu verwenden
So verwalten Sie eine README-Datei für Github und PyPI
Ich möchte einen Blog-Editor mit dem Administrator von Django erstellen
Experimentieren Sie mit Python, um ein PDF für Selbstversorger für Kindle zu erstellen
Ich möchte ein Klickmakro mit pyautogui (Wunsch) erstellen.
Wie erstelle ich ein Python-Paket (geschrieben für Praktikanten)
Ich möchte ein Klickmakro mit pyautogui (Outlook) erstellen.
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
[Discord.py] Eine Lösung für diejenigen, die dispandar nicht erfolgreich einführen können
Ich möchte vorerst eine Docker-Datei erstellen.
Für diejenigen, die nicht wissen, wie man ein Passwort mit Jupyter auf Docker festlegt
[Version 2020 für Anfänger] Empfohlene Lernmethode für diejenigen, die selbst KI-Ingenieur werden möchten
"Curly and Bazaar", das Leute lesen wollen, die in einem soliden Unternehmen arbeiten
Aufbau einer Python-Umgebung für diejenigen, die Datenwissenschaftler 2016 werden möchten
Spigot (Papier) Einführung in die Erstellung eines Plug-Ins für 2020 # 01 (Umgebungskonstruktion)
So führen Sie einen Komponententest durch Teil 1 Entwurfsmuster zur Einführung
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich möchte eine Parameterliste aus CloudFormation-Code (yaml) erstellen.
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ein Hinweis für diejenigen, die Python in Visual Studio verwenden (ich)
Anfänger möchten mit UE4 so etwas wie einen Rubic Cube erstellen und daraus eine Bibliothek für verbessertes Lernen # 4 machen
[Hi Py (Teil 1)] Ich möchte vorerst etwas machen, also setze zuerst ein Ziel.
Anfänger möchten mit UE4 so etwas wie einen Rubic Cube erstellen und daraus eine Bibliothek für erweitertes Lernen # 5 machen
Anfänger möchten mit UE4 so etwas wie einen Rubic Cube erstellen und daraus eine Bibliothek für verbessertes Lernen # 6 machen
Wie erstelle ich eine japanisch-englische Übersetzung?
Machen Sie eine Tweet-Box für Pepper
Schritte zum Erstellen eines Django-Projekts
Wie man einen lockeren Bot macht
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
[Blender] So erstellen Sie ein Blender-Plug-In
Wie erstelle ich einen Crawler?
So erstellen Sie mit YOLO in 3 Stunden ein Modell für die Objekterkennung
Ich habe versucht, eine Gesichtsdiagnose-KI für professionelle Golferinnen zu erstellen ①