Lors de la création d'un fichier exe sur Windows à l'aide de py2exe, de nombreux sites sont écrits de manière inattendue en combinaison avec distutils. Cependant, si vous utilisez python sur Linux, etc., vous voudrez certainement l'utiliser en combinaison avec distribuer (setuptools) lors de l'empaquetage. Le paquet setuptools améliore distutils, et lorsque setuptools est inclus, les paramètres donnés à la fonction setup () de distutils sont améliorés, le paquet peut être distribué au format egg et un outil de ligne de commande appelé easy_install peut être utilisé. Ou devenir.
Ce setuptools a cessé de se mettre à jour récemment, mais c'est la distribution qui prend en charge le développement et fournit une API entièrement compatible. Si vous comptez l'utiliser maintenant, vous devez absolument utiliser la distribution. Je voudrais expliquer py2exe immédiatement, mais dans un souci de révision, je vais expliquer de distribuer. (D'ailleurs, chaque concept est séparé, il n'est donc pas nécessaire de l'écrire. Pour ces personnes, cette page est inutile) </ del>
Un commentaire aimable s'est avéré que la distribution est devenue obsolète. Il est préférable de faire le tour et d'utiliser des outils de configuration.
Since the Setuptools 0.7 release, Setuptools and Distribute have merged and Distribute is no longer being maintained.
Tout d'abord, je vais vous présenter comment installer les outils de configuration généraux.
$ curl -O https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py
$ sudo python ./dez_setup.py
Téléchargez et exécutez simplement le script de configuration. Très facile. Après avoir installé ce package, vous pourrez utiliser un outil appelé easy_install, qui vous permettra d'installer des packages communs sur site_packages (voir lien à la fin).
À propos, lors de la distribution de la source, il n'est pas possible de supposer que les outils de configuration sont installés. Vous pouvez dire «installer» dans la documentation, mais c'est un peu moche de le faire, même si vous utilisez python, qui peut également résoudre les dépendances. Dans un tel cas, incluez distribuer_setup.py dans la distribution et écrivez comme suit au début de setup.py.
setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ez_setup
ez_setup.use_setuptools()
Si vous mettez la description ci-dessus au début de setup.py, le package de distribution sera installé lorsque le script setup.py sera installé.
Avec l'installation jusqu'à présent, setuptools peut être importé. Ici, je vais vous présenter comment écrire setup.py qui combine setuptools et py2exe. Tout d'abord, le modèle est le suivant.
setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = "<author name>"
__author_email__ = "<author's email>"
__date__ = "<date>"
__version__ = "<version number>"
import os
from os import listdir
from os.path import join
from os.path import dirname
from os.path import splitext
import ez_setup
ez_setup.use_setuptools()
from setuptools import setup
import py2exe
def find_py_modules(dir):
py_modules = []
for f in listdir(dir):
base, ext = splitext(f)
if ext == '.py' and base != '<AppName>': py_modules.append(base)
return py_modules
def read(fname):
return open(join(dirname(__file__), fname)).read()
setup(name='VideoRecorder',
version=__version__,
description='<description>',
author=__author__,
author_email=__author_email__,
url='<project homepage>',
long_description=read('README'),
include_package_data=True,
console=[
{
'script': '<main python module>',
'icon_resources': [(1, '<icon path>'),],
},
],
package_dir = {'': 'src'},
py_modules=find_py_modules('src'),
package_data={'':['*.ini', '*.gif', '*.ico']},
data_files=[("", [<necessary dlls>]),],
zipfile=None
)
Dans le modèle, la pièce entre <> est la pièce à modifier pour chaque créateur. La liste est donnée ci-dessous.
variable | Aperçu |
---|---|
author | Nom du créateur |
author's email | L'adresse e-mail de l'auteur |
date | Date |
version number | Numéro de version |
app name | Chemin du module python majeur |
description | Aperçu |
project homepage | Page d'accueil du projet |
icon path | Chemin de l'icône |
necessary dlls | En fonction du tableau de fichiers requis et du package à utiliser, il peut être nécessaire d'inclure des dll et des polices. |
Les variables ci-dessus doivent être ajustées pour le projet. La méthode importée de distribuer est la configuration. Les paramètres de setup.py sont les suivants.
Paramètres | Aperçu |
---|---|
version | Numéro de version du logiciel |
description | Présentation du logiciel |
author | Nom du créateur |
author_email | Coordonnées du créateur |
url | URL du projet |
license | Informations de licence (non décrites dans le modèle) |
keywords | Informations sur les mots clés (non décrites dans le modèle) |
long_description | Une description plus détaillée du logiciel |
console/windows | Déclarez-le en tant que paramètre de console si vous souhaitez afficher un message d'erreur ou en tant que paramètre Windows si vous souhaitez qu'il fonctionne comme une application d'interface utilisateur pure. |
options | Compressé comme clé de dictionnaire, optimize, bundle_Spécifiez les fichiers. (Non décrit dans le modèle) |
include_package_data | CVS, Subversion, MANIFEST.valeur booléenne indiquant s'il faut inclure le fichier spécifié dans le fichier in |
package_dir | Informations de répertoire qui constituent la base du package |
package_data | Un dictionnaire qui associe une liste de noms de packages à des modèles de noms de fichiers |
py_modules | Spécification de modules python non empaquetés |
data_files | Spécification des fichiers à inclure dans la distribution autres que le véritable package python |
zipfile | Spécifiez s'il faut convertir les modules python en fichier zip |
Les significations des autres méthodes sont expliquées ci-dessous. Les variables <> dans ces fonctions et modèles ne sont pas essentielles, vous pouvez donc les modifier en fonction de votre projet.
def find_py_modules(dir):
py_modules = []
for f in listdir(dir):
base, ext = splitext(f)
if ext == '.py' and base != '<AppName>': py_modules.append(base)
return py_modules
find_py_modules est une version de module (également une implémentation simple) de find_packages. Dans le cas d'une application qui combine des packages externes, la source principale peut être une unité qui n'a pas besoin d'être packagée. Dans un tel cas, il est préférable de combiner le paramètre py_modules et la méthode find_py_modules (le contenu doit être ajusté individuellement) au lieu du paramètre packages et de la méthode find_packages.
def read(fname):
return open(join(dirname(__file__), fname)).read()
La méthode read est une méthode pour lire le contenu de long_description à partir d'un fichier. C'est une méthode pratique lors de la création d'une application d'une échelle que la description ne suffit pas à expliquer.
En ce qui concerne setuptools lui-même, il existe un blog avec des informations précises et complètes, veuillez donc vous y référer.
J'ai également fait référence à ce site lors de la création de ce site. Je pense que c'est le point de départ pour la gestion de setuptools. D'autres liens concernant easy_install et distribuer sont les suivants. Les deux sont des sites anglais, donc si vous voulez une explication plus simple, recherchez sur Google avec les mots clés suivants (+ python).
Recommended Posts