Registrierung bei PyPI aus einer modernen Python-Bibliothek selbst erstellt

Ich möchte meine Bibliothek bei PyPI registrieren

... aber Python hat so etwas wie Rubys Bundler Nein (ich denke nicht, dass es einheitlich ist, auch wenn es passt) Eine kostenlose Verzeichnisstruktur für jedes Produkt ...

Zumindest wollte ich meine Produkte vereinheitlichen Verzeichnisstruktur beim Erstellen einer Python-Bibliothek Schreiben Sie Notizen zum Umgebungsbau. Ich werde vergessen ...

Mir ist bekannt, dass die verwendete Version von Python 3.3 oder höher ist. Vorher wird (3.2, 3.1 ... 2.x) nicht berücksichtigt. Ich denke nicht, dass es ein Problem ist ...

Zu Testzwecken erstellte Bibliothek

スクリーンショット 2013-10-16 8.08.53.png

Ich habe eine seltsame Bibliothek namens ** fizzbuzz ** erstellt. Es ist eine Bibliothek oder ein Befehlszeilenprogramm. Ich werde Notizen schreiben, die auf der Struktur dieser Bibliothek basieren.

Bibliotheksverzeichnis / Dateistruktur

Die Verzeichnis- und Dateistruktur ist wie folgt.

fizzbuzz
└lib #Bibliothekskörper
  └bin #Ausführungsskriptkörper
  └fizzbuzz #Bibliotheksnamenverzeichnis
      └ __init__.py #Die Initialisierungseinstellungen beim Importieren der Bibliothek finden Sie hier
  └test #Testdatei
requirements.txt # travis-ci und setup.Verwenden Sie mit py. Pip--Kann mit Einfrieren gemacht werden.
info.py #Datei mit Informationen zum Paketautor usw.
version.py #Datei mit Versionsinformationen
setup.py #Datei als Schlüssel

Ich denke es ist okay aus diesem Grund.

Erstellen Sie die pyvenv-Umgebung im Bibliotheksverzeichnis

Ab Python 3.3 ist `` `virtualenv``` enthalten. Verwenden Sie den folgenden Befehl, um den Betrieb der Bibliothek zu testen Erstellen Sie eine lokale Python-Ausführungsumgebung.

> pyvenv .venv

Ich benutze es seit virtualenv, also ist es unter .venv Ich versuche, eine Umgebung für pyvenv zu erstellen, aber ich denke, dass dies optional ist (z. B. .pvenv).

Da ich eine lokale Python-Ausführungsumgebung erstellt habe, activatedie MuschelsourceMit einem Befehl importieren. Auf diese Weise wird die Python-Umgebung unter `` `.venv``` verwendet. (wie Python-Befehl)

> source .venv/bin/activate

Installation von Setup-Tools

Bis zu einer bestimmten Version von virtualenv Die Systembibliothek wurde von virtualenv importiert. Es kann nicht als neue Version von virtualenv und pyvenv importiert werden. Das Ausführen von pyvenv schafft eine reine Umgebung.

Daher wird die Umgebung ohne "easy_install" erstellt. Führen Sie den folgenden Befehl aus, um `` `setuptools``` einzurichten.

Zitiert von der PyPI-Seite von setuptools.

> wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python

Führen Sie nun den Befehl easy_install aus und er befindet sich in PyPI Sie können das Paket installieren. Aber anstatt das PyPI-Paket mit easy_install zu installieren

Es ist einfacher mit pip zu verwenden. Lassen Sie uns pip setzen...



## Rohrinstallation

 Wenn Sie easy_install installiert haben, können Sie pip einfach installieren.

easy_install pip


 Jetzt bist du bereit.

# Erstellen Sie eine Liste der erforderlichen Bibliotheken

 Wenn Ihre Bibliothek eine andere Bibliothek verwendet
 In dem an die Funktion setuptools.setup übergebenen Hash
 Sie müssen install_requires angeben.
 Mit pip können Sie einfach eine Liste der erforderlichen Bibliotheken erstellen.

pip freeze > requirements.txt


 Travis CI verwendet auch die Datei resources.txt

 Verwenden Sie in setup.py `` `require.txt```, um install_requires anzugeben.

```py
setup({
  install_requires: open('requirements.txt').read().splitlines(),
})

Dadurch werden die von der Bibliothek benötigten externen Bibliotheken installiert.

Wo werden die Paketinformationen aufbewahrt?

Informationen zum Paketersteller

In welcher Datei sollten die Informationen zum Bibliotheksersteller von PyPI angezeigt werden? Ich war ratlos, aber ich habe es als `` `info.py``` direkt unter das Paket root gelegt.

info.py


# package information.
INFO = dict(
  name        = "PyFizzBuzz",
  description = "FizzBuzz cli tool",
  author      = "Keiji Matsuzaki",
  author_email = "[email protected]",
  license     = "MIT License",
  url         = "https://github.com/futoase/fizzbuzz",
  classifiers = [
    "Programming Language :: Python :: 3.2",
    "Programming Language :: Python :: 3.3",
    "License :: OSI Approved :: MIT License"
  ]
)

Klassifizierer haben eine eigene Bibliothek von Hier auflisten Wählen Sie das Genre aus und legen Sie es fest.

Paketversion

version.Geben Sie VERSION in py an.




#### **`version.py`**
```py

VERSION = "0.0.3"

Erstellen einer MANIFEST.in-Datei

** 20131017 Nachtrag **

package_info in dir.py, version.py, requirements.Weil Sie keine txt-Datei angegeben haben


 Ich muss eine MANIFEST.in-Datei schreiben.
 Ich konnte keine Probleme finden, die nicht enthalten waren, da ich sie zum Zeitpunkt des Schreibens dieses Artikels nicht überprüft hatte.
 Also füge es hinzu.


#### **`MANIFEST.in`**
```py

include info.py
include version.py
include requirements.txt

Pakettests

Testen Sie das Paket mit dem Befehl pip

> pip install .

Indem Sie sich in Ihrem eigenen Verzeichnis angeben und eine Pip-Installation durchführen, pyvenvSie können Ihre eigene Bibliothek in Ihrer Umgebung verwenden.

> pip list
konira (0.3.2)
pip (1.4.1)
PyFizzBuzz (0.0.3)
setuptools (1.1.5)

Wenn Sie nach der Pip-Installation einen Fehler in Ihrer Bibliothek finden Führen Sie den folgenden Befehl in der Umgebung von pyvenv aus.

> pip uninstall PyFizzBuzz

Es ist, als würde man `` `gemspec``` in der Gemfile angeben ... Ich denke, Sie sollten den Befehl mit Gefühlen ausführen ...

Funktionsprüfung

Dieses Mal wird fizzbuzz also als Befehl ausgeführt

.venv/bin/Der Befehl befindet sich in fizzbuzz.



(.venv) > fizzbuzz 10 | head -3
1 2 Fizz


 Ich konnte den Betrieb überprüfen.

# Registrieren Sie sich bei PyPI

 Wenn Sie sich nicht bei PyPI registriert haben, führen Sie den folgenden Befehl aus, um sich zu registrieren.


#### **`~/.Wenn Sie keine Piprc-Datei generiert haben, werden Sie aufgefordert, Ihren Benutzernamen und Ihr Kennwort zu registrieren.(Sollte sein)...`**
> python setup.py register

Laden Sie das Paket auf PyPI hoch.

> python setup.py sdist upload

OK, wenn in PyPI eine Bibliotheksseite erstellt wird

Dies kann für C-Erweiterungsbibliotheken unterschiedlich sein. (Ich denke nicht daran, Eidateien hochzuladen ...)

Nach dem Hochladen auf PyPI

Die Anzahl der Downloads pro Tag, eine Liste der zuvor hochgeladenen Versionen von Dateien usw. Sie können es auf der PyPI-Seite sehen. (Anmeldung erforderlich)

Es macht ziemlich viel Spaß.

Beiseite

Da setuptools in Distribute integriert ist, werden aber nur setuptools importiert Vor der Integration wurden die zu importierenden Pakete durch setup.py in der folgenden Form getrennt.

setup.py


try:
    import setuptools
except ImportError:
    from distribute_setup import use_setuptools
    use_setuptools()
from setuptools import setup, find_packages

Distribute_setup.py wurde von hier gelöscht (ich kann momentan nicht darauf zugreifen) und war im Paket enthalten.

Es war gut, mit den Setup-Tools vereinheitlicht zu sein. (Dieser Artikel ist möglicherweise möglich, da er die Abwärtskompatibilität nicht berücksichtigt ...)

Recommended Posts

Registrierung bei PyPI aus einer modernen Python-Bibliothek selbst erstellt
x86-Compiler selbst erstellt mit Python
Mit Skype benachrichtigen Sie mit Skype von Python!
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Paket Python-Laufzeit- und Pypi-Bibliothek mit Chef / Omnibus und Docker
Verwenden von Rstan aus Python mit PypeR
Richten Sie mit Homebrew eine moderne Python-Umgebung ein
Installieren Sie Python von der Quelle mit Ansible
Führen Sie Aprili von Python auf Orange aus
[HyperledgerIroha] Abfrage mit Python-Bibliothek
Laden Sie fbx aus Python mitinema4d
Logistische Regressionsanalyse Selbst erstellt mit Python
Sammeln von Informationen von Twitter mit Python (Twitter API)
Empfangen Sie Textdaten von MySQL mit Python
Holen Sie sich HTML von Element mit Python-Selen
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Spielen Sie eine Audiodatei von Python mit Interrupt ab
Erstellen Sie mit python3 eine Wortwolke aus Ihrem Tweet
Tweet von Python mit Twitter Developer + Tweepy
Geschäftseffizienz von Grund auf mit Python
Mit openssl verschlüsselte Dateien werden mit openssl aus Python entschlüsselt
[Python] Registrieren Sie Ihre eigene Bibliothek in PyPI
Verwenden Sie die Verschlüsselung der Verschlüsselungsbibliothek mit dem Python-Image von Docker
Bearbeiten von Azure CosmosDB aus Python Part.2
Bildaufnahme von der Kamera mit Python + OpenCV
Erste Schritte mit Dynamo von Python Boto
Versuchen Sie HTML-Scraping mit der Python-Bibliothek
Veröffentlichen Sie Ihre eigene Python-Bibliothek auf Homebrew
Verwenden von C ++ - Funktionen aus Python mit pybind11
[Python] Python-Paketinformationen mit der PyPI-API abrufen
Erstellen Sie mit Neovim eine moderne Python-Umgebung
Stellen Sie die von Eigen of C ++ erstellte Bibliothek mit Boost.Numpy in Python zur Verfügung.
Ich habe PyQCheck, eine Bibliothek, die QuickCheck mit Python ausführen kann, in PyPI registriert.
Sammeln von Informationen von Twitter mit Python (Umgebungskonstruktion)
[Persönliches Memo] julia - Verwenden Sie die Python-Bibliothek mit julia unter Verwendung von PyCall
CSV-Ausgabe der Google-Suche mit [Python]! 【Einfach】
Zusammenfassung des Bibliotheksvergleichs zum Generieren von PDF mit Python
Versuchen Sie, Studio Library von Python aus zu betreiben. [Anim speichern]
Wickeln Sie C mit Cython für Python ein
~ Tipps für Python-Anfänger mit Liebe von Pythonista ① ~
Stellen Sie OpenCV3 in Python3 zur Verfügung, das mit pyenv installiert wurde
Bildverarbeitung von Grund auf mit Python (4) Konturextraktion
Generieren Sie mit Python eine Einfügeanweisung aus CSV.
Verwalten Sie AWS mit der Python-Bibliothek Boto
Rufen Sie die Python-Bibliothek zur Textnormalisierung in MATLAB auf
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Installieren Sie vim7.3 (+ python2.4) von der Quelle (kompatibel mit Gundo.vim)
Wrap C ++ mit Cython zur Verwendung von Python
Lesen Sie mit Python Zeile für Zeile aus der Datei
Konvertieren Sie JSON mit Python von Splunk in CSV
Von der Python-Umgebungskonstruktion zur virtuellen Umgebungskonstruktion mit Anaconda
Extrahieren Sie mit Python Daten von einer Webseite
FizzBuzz in Python3
Scraping mit Python
Python ast Bibliothek
Statistik mit Python
Scraping mit Python
Python mit Go
In Python integrieren