Kann mir bitte jemand erklären, was setup.py
ist und wie es konfiguriert oder verwendet werden kann?
Antworten
Zu viele Anzeigen?setup.py
ist eine Python-Datei, deren Vorhandensein ein Hinweis darauf ist, dass das zu installierende Modul/Paket wahrscheinlich mit Distutils, dem Standard für die Verteilung von Python-Modulen, gepackt und verteilt wurde.
Damit können Sie Python-Pakete einfach installieren. Oft reicht es aus, zu schreiben:
$ pip install .
pip
wird verwendet setup.py
um Ihr Modul zu installieren. Vermeiden Sie den Aufruf setup.py
direkt.
https://docs.python.org/3/installing/index.html#installing-index
Es hilft, ein Python-Paket zu installieren foo
auf Ihrem Rechner (kann auch in virtualenv
), damit Sie das Paket importieren können foo
aus anderen Projekten und auch aus [I]Python-Eingaben.
_Es erfüllt die gleiche Aufgabe wie pip
, easy_install
usw.,_
Verwendung von setup.py
Beginnen wir mit einigen Definitionen:
Paket - Ein Ordner/Verzeichnis, das Folgendes enthält __init__.py
Datei.
Modul - Eine gültige Python-Datei mit .py
Erweiterung.
Vertrieb - Wie man Paket bezieht sich auf andere Pakete y Module .
Nehmen wir an, Sie möchten ein Paket namens foo
. Dann tun Sie es,
$ git clone https://github.com/user/foo
$ cd foo
$ python setup.py install
Wenn Sie die Software nicht installieren, aber dennoch verwenden möchten, können Sie dies tun. Dann tun Sie das,
$ python setup.py develop
Dieser Befehl erstellt Symlinks auf das Quellverzeichnis innerhalb von site-packages, anstatt Dinge zu kopieren. Aus diesem Grund ist er recht schnell (besonders bei großen Paketen).
Erstellen von setup.py
Wenn Sie Ihr Paket Baum wie,
foo
foo
data_struct.py
__init__.py
internals.py
README
requirements.txt
setup.py
Dann machen Sie folgendes in Ihrem setup.py
Skript, damit es auf einem Rechner installiert werden kann:
from setuptools import setup
setup(
name='foo',
version='1.0',
description='A useful module',
author='Man Foo',
author_email='foomail@foo.com',
packages=['foo'], #same as name
install_requires=['wheel', 'bar', 'greek'], #external packages as dependencies
)
Wenn Ihr Paketbaum jedoch komplexer ist, wie im folgenden Beispiel:
foo
foo
data_struct.py
__init__.py
internals.py
README
requirements.txt
scripts
cool
skype
setup.py
Dann, Ihr setup.py
wäre in diesem Fall wie:
from setuptools import setup
setup(
name='foo',
version='1.0',
description='A useful module',
author='Man Foo',
author_email='foomail@foo.com',
packages=['foo'], #same as name
install_requires=['wheel', 'bar', 'greek'], #external packages as dependencies
scripts=[
'scripts/cool',
'scripts/skype',
]
)
Fügen Sie mehr Material zu ( setup.py
) & es anständig machen:
from setuptools import setup
with open("README", 'r') as f:
long_description = f.read()
setup(
name='foo',
version='1.0',
description='A useful module',
license="MIT",
long_description=long_description,
author='Man Foo',
author_email='foomail@foo.com',
url="http://www.foopackage.com/",
packages=['foo'], #same as name
install_requires=['wheel', 'bar', 'greek'], #external packages as dependencies
scripts=[
'scripts/cool',
'scripts/skype',
]
)
El long_description
wird verwendet in pypi.org als README-Beschreibung für Ihr Paket.
Und schließlich können Sie Ihr Paket auf die Website PyPi.org damit andere Ihr Paket installieren können, indem sie pip install yourpackage
.
An diesem Punkt gibt es zwei Möglichkeiten.
- veröffentlichen im vorübergehend test.pypi.org Server, um sich mit dem Verfahren vertraut zu machen, und veröffentlichen Sie es dann auf dem dauerhaft pypi.org Server, damit die Öffentlichkeit Ihr Paket nutzen kann.
- sofort im Internet veröffentlichen dauerhaft pypi.org Server, wenn Sie mit dem Verfahren bereits vertraut sind und Ihre Anmeldedaten (z. B. Benutzername, Passwort, Paketname) haben
Sobald Ihr Paketname in pypi.org kann niemand sie beanspruchen oder verwenden. Python-Paketierung schlägt die Zwirn Paket für das Hochladen (Ihres Pakets auf PyPi). Daher,
(1) Der erste Schritt besteht darin, lokal bauen die Verteilungen verwenden:
# prereq: wheel (pip install wheel)
$ python setup.py sdist bdist_wheel
(2) dann mit twine
zum Hochladen entweder auf test.pypi.org oder pypi.org:
$ twine upload --repository testpypi dist/*
username: ***
password: ***
Es wird einige Minuten dauern, bis das Paket auf test.pypi.org erscheint. Sobald Sie damit zufrieden sind, können Sie Ihr Paket in den echten und permanenten Index von pypi.org einfach mit:
$ twine upload dist/*
Optional können Sie die Dateien in Ihrem Paket auch mit einer GPG
von:
$ twine upload dist/* --sign
Bonus Lesung :
-
Siehe ein Beispiel
setup.py
von einem echten Projekt hier:torchvision-setup.py
setup.py
ist die Antwort von Python auf ein Multiplattform-Installationsprogramm und make
Datei.
Wenn Sie mit Befehlszeileninstallationen vertraut sind, dann make && make install
heißt übersetzt python setup.py build && python setup.py install
.
Einige Pakete sind reines Python und werden nur bytekompiliert. Andere können nativen Code enthalten, der einen nativen Compiler erfordert (wie gcc
o cl
) und ein Python-Schnittstellenmodul (wie swig
o pyrex
).
Wenn Sie das Paket mit der Datei "setup.py" im Root-Ordner heruntergeladen haben, können Sie es installieren, indem Sie
python setup.py install
Wenn Sie ein Projekt entwickeln und sich fragen, wozu diese Datei nützlich ist, lesen Sie Python-Dokumentation zum Schreiben des Setup-Skripts
- See previous answers
- Weitere Antworten anzeigen