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.
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.
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
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.
`find_packages (exclude = [" *. Pyc "])`
entfernt werden soll install_requires=[
"hoge",
],
Zusammenfassend ist die MIT-Lizenz die folgende Lizenz.
- 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.
- Der Autor oder Inhaber des Urheberrechts ist nicht für die Software verantwortlich.
classifiers: Verwandte Kategorien
Derjenige, der bei der Suche nach Kategorien in PyPI (Kategorieliste) gefangen zu sein scheint.
entry_points: Erstellen Sie einen Befehl, der die Funktionalität des Pakets bereitstellt
Wie schreibe ich:
Befehlsname = Skriptpfad: Funktion zum Ausführen von `` `
Diese Informationen werden auch in Python-Dokumentation erläutert.
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.
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.
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.
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.
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
Ja! Nachdem die Registrierung abgeschlossen ist, überprüfen wir sie auf der PyPI-Site. So was
Es ist perfekt veröffentlicht, so dass Sie es jetzt mit `pip install
`installieren können!
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