Quelqu'un peut-il expliquer ce qu'est setup.py
et comment il peut être configuré ou utilisé?
python
python-3.x
setup.py
pypi
python-packaging
Logiciel enthousiaste
la source
la source
Réponses:
setup.py
est un fichier python, qui vous indique généralement que le module / package que vous êtes sur le point d'installer a été empaqueté et distribué avec Distutils, qui est la norme pour la distribution des modules Python.Cela vous permet d'installer facilement des packages Python. Souvent, il suffit d'écrire:
pip
utilisera setup.py pour installer votre module. Évitez d'appelersetup.py
directement.https://docs.python.org/3/installing/index.html#installing-index
la source
setup.py
fichier.Cela aide à installer un package python
foo
sur votre machine (peut également l'êtrevirtualenv
) afin que vous puissiez importer le package àfoo
partir d'autres projets et également à partir des invites [I] Python.Il fait le travail similaire de
pip
,easy_install
etc.,En utilisant
setup.py
Commençons par quelques définitions:
Package - Un dossier / répertoire qui contient un
__init__.py
fichier.Module - Un fichier python valide avec une
.py
extension.Distribution - Lien entre un package et d'autres packages et modules .
Supposons que vous souhaitiez installer un package nommé
foo
. Alors tu fais,Au lieu de cela, si vous ne souhaitez pas réellement l'installer mais souhaitez tout de même l'utiliser. Alors fais,
Cette commande créera des liens symboliques vers le répertoire source dans les packages de site au lieu de copier des choses. Pour cette raison, il est assez rapide (en particulier pour les gros colis).
Créer
setup.py
Si vous avez votre arborescence de packages comme,
Ensuite, vous effectuez les opérations suivantes dans votre
setup.py
script afin qu'il puisse être installé sur une machine:Au lieu de cela, si votre arborescence de packages est plus complexe comme celle ci-dessous:
Ensuite, votre
setup.py
dans ce cas serait comme:Ajoutez plus de choses à (
setup.py
) et rendez-le décent:Le
long_description
est utilisé dans pypi.org comme description README de votre paquet.Et enfin, vous êtes maintenant prêt à télécharger votre package sur PyPi.org afin que d'autres puissent installer votre package à l'aide
pip install yourpackage
.La première étape consiste à réclamer le nom et l'espace de votre package dans pypi en utilisant:
Une fois le nom de votre colis enregistré, personne ne peut le réclamer ou l'utiliser. Après une inscription réussie, vous devez y télécharger votre package (dans le cloud) par,
En option, vous pouvez également signer votre colis avec
GPG
par,Bonus : Voir un échantillon
setup.py
d'un vrai projet ici:torchvision-setup.py
la source
requests
) a ce projet pour donner explicitement un bon exemple de setup.py - github.com/kennethreitz/setup.pysetup.py
est la réponse de Python à un programme d'installation et à unmake
fichier multi-plateforme .Si vous connaissez les installations en ligne de commande, cela se
make && make install
traduit parpython setup.py build && python setup.py install
.Certains packages sont en pur Python et ne sont compilés qu'en octets. D'autres peuvent contenir du code natif, qui nécessitera un compilateur natif (comme
gcc
oucl
) et un module d'interface Python (commeswig
oupyrex
).la source
python setup.py install
s'exécute en fait enpython setup.py build
premier (vous n'avez donc pas besoin de les exécuter séparément sauf dans des cas spécifiques). Je crois qu'ilmake
faut toujours exécuter manuellement avant d'exécutermake install
.make
fait, ne nécessite aucun paramètre (ou ordre) spécifique: c'est au créateur de déterminerMakefile
quelles "cibles" sont disponibles (et dans quel ordre elles doivent être invoquées). Étant donné que lesMakefile
s bare ne sont (généralement) pas très portables, ils ont tendance à être générés à l'aide de commandes telles que./configure
(autotools) oucmake .
(cmake) et c'est à ces programmes de définir si vous devez exécuter explicitementmake
avantmake install
ou non.Si vous avez téléchargé un package contenant "setup.py" dans le dossier racine, vous pouvez l'installer en exécutant
Si vous développez un projet et vous demandez à quoi ce fichier est utile, consultez la documentation Python sur l'écriture du script d'installation
la source
setup.py
est un script Python qui est généralement livré avec des bibliothèques ou des programmes, écrits dans ce langage. Son but est l'installation correcte du logiciel.De nombreux packages utilisent le
distutils
framework en conjonction avecsetup.py
.http://docs.python.org/distutils/
la source
setup.py peut être utilisé dans deux scénarios. Premièrement, vous souhaitez installer un package Python. Deuxièmement, vous souhaitez créer votre propre package Python. Habituellement, le package Python standard contient quelques fichiers importants tels que setup.py, setup.cfg et Manifest.in. Lorsque vous créez le package Python, ces trois fichiers détermineront le (contenu dans PKG-INFO sous le dossier egg-info), la version, la description, les autres installations requises (généralement dans le fichier .txt) et quelques autres paramètres. setup.cfg est lu par setup.py lors de la création du package (peut être tar.gz). Manifest.in est l'endroit où vous pouvez définir ce qui doit être inclus dans votre package. Quoi qu'il en soit, vous pouvez faire beaucoup de choses en utilisant setup.py comme
Il existe de nombreuses autres commandes qui pourraient être utilisées avec setup.py. pour aider
la source
python setup.py --help-commands
. Très utile pour creuser dans setup.py.Lorsque vous téléchargez un package avec
setup.py
ouvrez votre terminal (Mac, Linux) ou invite de commande (Windows). Encd
vous aidant du bouton Tab et en vous aidant, définissez le chemin d'accès au dossier dans lequel vous avez téléchargé le fichier et où se trouvesetup.py
:Appuyez sur Entrée, vous devriez voir quelque chose comme ceci:
Tapez ensuite après ceci
python setup.py install
:Appuyez sur
enter
. Terminé!la source
Pour installer un package Python que vous avez téléchargé, vous extrayez l'archive et exécutez le script setup.py à l'intérieur:
Pour moi, cela a toujours semblé étrange. Il serait plus naturel de pointer un gestionnaire de paquets vers le téléchargement, comme on le ferait dans Ruby et Nodejs, par exemple.
gem install rails-4.1.1.gem
Un gestionnaire de paquets est également plus confortable, car il est familier et fiable. En revanche, chacun
setup.py
est nouveau, car il est spécifique au package. Il exige la foi dans la convention "Je fais confiance à ce setup.py prend les mêmes commandes que d'autres que j'ai utilisées dans le passé". C'est une taxe regrettable sur la volonté mentale.Je ne dis pas que le flux de travail setup.py est moins sécurisé qu'un gestionnaire de paquets (je comprends que Pip exécute simplement setup.py à l'intérieur), mais je pense certainement que c'est maladroit et discordant. Il y a une harmonie entre les commandes et la même application du gestionnaire de paquets. Vous pourriez même en devenir friand.
la source
setup.py
est un fichier Python comme les autres. Il peut prendre n'importe quel nom, sauf par convention qu'il est nommé desetup.py
sorte qu'il n'y ait pas de procédure différente avec chaque script.Le plus souvent
setup.py
est utilisé pour installer un module Python mais pour servir à d'autres fins:Modules:
Il s'agit peut-être de l'utilisation la plus connue des
setup.py
modules. Bien qu'elles puissent être installées à l'aidepip
, les anciennes versions de Python n'incluaient paspip
par défaut et devaient être installées séparément.Si vous vouliez installer un module mais ne vouliez pas l'installer
pip
, à peu près la seule alternative était d'installer le module à partir d'unsetup.py
fichier. Cela pourrait être réalisé viapython setup.py install
. Cela installerait le module Python dans le dictionnaire racine (sanspip
,easy_install
ect).Cette méthode est souvent utilisée en cas d'
pip
échec. Par exemple, si la version Python correcte du package souhaité n'est pas disponible viapip
peut-être parce qu'elle n'est plus maintenue, le téléchargement de la source et son exécutionpython setup.py install
effectueraient la même chose, sauf dans le cas où des binaires compilés sont requis (mais ignorera le Version Python - sauf si une erreur est retournée).Une autre utilisation de
setup.py
est d'installer un paquet depuis la source. Si un module est encore en cours de développement, les fichiers de roue ne seront pas disponibles et la seule façon d'installer est d'installer directement depuis la source.Construire des extensions Python:
Lorsqu'un module a été construit, il peut être converti en module prêt à être distribué à l'aide d'un script de configuration distutils . Une fois construits, ceux-ci peuvent être installés à l'aide de la commande ci-dessus.
Un script d'installation est facile à construire et une fois que le fichier a été correctement configuré et peut être compilé en exécutant
python setup.py build
(voir le lien pour toutes les commandes).Encore une fois, il est nommé
setup.py
pour sa facilité d'utilisation et par convention, mais peut prendre n'importe quel nom.Cython:
Une autre utilisation célèbre des
setup.py
fichiers comprend les extensions compilées. Ceux-ci nécessitent un script de configuration avec des valeurs définies par l'utilisateur. Ils permettent une exécution rapide (mais une fois compilée dépend de la plate-forme). Voici un exemple simple de la documentation :Cela peut être compilé via
python setup.py build
Cx_Freeze:
Un autre module nécessitant un script d'installation est
cx_Freeze
. Cela convertit le script Python en exécutables. Cela permet à de nombreuses commandes telles que les descriptions, les noms, les icônes, les packages d'inclure, d'exclure ect et une fois exécutées produira une application distribuable. Un exemple tiré de la documentation :Cela peut être compilé via
python setup.py build
.Alors qu'est-ce qu'un
setup.py
fichier?C'est tout simplement un script qui construit ou configure quelque chose dans l'environnement Python.
Un package, lorsqu'il est distribué, ne doit contenir qu'un seul script de configuration, mais il n'est pas rare d'en combiner plusieurs en un seul script de configuration. Notez que cela implique souvent
distutils
mais pas toujours (comme je l'ai montré dans mon dernier exemple). La chose à retenir est simplement de configurer le package / script Python d'une manière ou d'une autre.Il prend le nom pour que la même commande puisse toujours être utilisée lors de la construction ou de l'installation.
la source
Pour simplifier, setup.py est exécuté comme
"__main__"
lorsque vous appelez les fonctions d'installation les autres réponses mentionnées. Dans setup.py, vous devez mettre tout le nécessaire pour installer votre package.Fonctions setup.py communes
Les deux sections suivantes décrivent deux choses que de nombreux modules setup.py ont.
setuptools.setup
Cette fonction vous permet de spécifier des attributs de projet comme le nom du projet, la version .... Plus important encore, cette fonction vous permet d'installer d'autres fonctions si elles sont correctement packagées. Voir cette page Web pour un exemple de setuptools.setup
Ces attributs de setuptools.setup permettent d'installer ces types de packages:
Packages importés dans votre projet et répertoriés dans PyPI à l' aide de setuptools.findpackages :
packages=find_packages(exclude=["docs","tests", ".gitignore", "README.rst","DESCRIPTION.rst"])
Les packages ne sont pas dans PyPI , mais peuvent être téléchargés à partir d'une URL à l'aide de dependency_links
dependency_links=["http://peak.telecommunity.com/snapshots/",]
Fonctions personnalisées
Dans un monde idéal,
setuptools.setup
gérerait tout pour vous. Malheureusement, ce n'est pas toujours le cas. Parfois, vous devez faire des choses spécifiques, comme installer des dépendances avec la commande subprocess , pour obtenir le système sur lequel vous installez dans le bon état pour votre package. Essayez d'éviter cela, ces fonctions prêtent à confusion et diffèrent souvent entre le système d'exploitation et même la distribution .la source