... 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 ...
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.
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.
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,
activate
die Muschelsource
Mit einem Befehl importieren.
Auf diese Weise wird die Python-Umgebung unter `` `.venv``` verwendet. (wie Python-Befehl)
> source .venv/bin/activate
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.
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.
version.Geben Sie VERSION in py an.
#### **`version.py`**
```py
VERSION = "0.0.3"
** 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
Testen Sie das Paket mit dem Befehl pip
> pip install .
Indem Sie sich in Ihrem eigenen Verzeichnis angeben und eine Pip-Installation durchführen,
pyvenv
Sie 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 ...
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 ...)
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ß.
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