Les étudiants qui sont souvent exposés à Python peuvent remarquer que lorsque vous devez installer un package Python tiers, la commande easy_install peut être utilisée. easy_install est une commande incluse dans le package setuptools développé par PEAK (Python Enterprise Application Kit). Elle est utilisée pour installer le package egg. Le package egg est actuellement le moyen le plus populaire de packager et de déployer des applications Python.
Comment fabriquer et installer un paquet d'œufs ? Je vais l’analyser brièvement ci-dessous.
1.1 Installer setuptools
Tout d'abord, installez l'outil setuptools. Vous pouvez directement utiliser l'installation d'apt sous Debian/Ubuntu : :
$ sudo apt-get install python-setuptools
Si vous l'installez manuellement, il existe deux manières :
Installez via le programme de démarrage ez_setup.py. Ce programme de démarrage téléchargera la dernière version des outils de configuration depuis Internet pour l'installation et pourra également mettre à jour les outils de configuration locaux.
$ wget http://peak.telecommunity.com/dist/ez_setup.py $ sudo python ez_setup.py
Mettez à jour setuptools : :
$ sudo python ez_setup.py -U setuptools
ou téléchargez le package egg de setuptools à installer. Le téléchargement de la dernière version peut être consulté ici. Après le téléchargement, installez-le via sh.
$ wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg $ sudo sh setuptools-0.6c11-py2.6.egg
Vous pouvez maintenant utiliser la commande easy_install pour installer d'autres packages egg.
1.2 Fabriquez votre propre paquet d'œufs
J'installe toujours les paquets d'œufs d'autres personnes, voulez-vous aussi créer votre propre paquet d'œufs ? D'accord, nous allons ensuite fabriquer nous-mêmes un simple sac à œufs. Tout d'abord, créez le répertoire du projet egg-demo et initialisez un fichier setup.py :
$ mkdir egg-demo $ cd egg-demo $ touch setup.py $ ls setup.py
Ce qui suit consiste principalement à remplir setup.py. setup.py est en fait le fichier de configuration du package d'outils python distutils, et setuptools est basé sur distutils. Configurez les informations d'emballage via la fonction de configuration dans setup.py. Tout d’abord, nous devons introduire la configuration des fonctions de setuptools. La configuration de setuptools est en fait la fonction de configuration de distutils. Remplissez setup.py avec le contenu suivant :
$ cat setup.py #!/usr/bin/env python #-*- coding:utf-8 -*- from setuptools import setup setup()
À ce stade, un fichier de configuration d'oeuf vide est écrit. Nous pouvons utiliser la commande suivante pour générer le package egg :
$ python setup.py bdist_egg
Jetons un coup d'œil à ce qui est généré :
$ ls -F build/ dist/ setup.py UNKNOWN.egg-info/
Vous pouvez voir trois autres dossiers. Sous le dossier dist, il y a un fichier egg : UNKNOWN-0.0.0-py2.6.egg. Ponte réussie ! Jetons d'abord un coup d'œil au format de ce fichier œuf :
$ file dist/UNKNOWN-0.0.0-py2.6.egg dist/UNKNOWN-0.0.0-py2.6.egg: Zip archive data, at least v2.0 to extract
Oh, il s'avère que c'est une archive zip ! D'accord, jetons un coup d'œil à la structure interne :
$ unzip -l dist/UNKNOWN-0.0.0-py2.6.egg Archive: dist/KNOWN-0.0.0-py2.6.egg Length Date Time Name --------- ---------- ----- ---- 120 2010-12-06 17:04 EGG-INFO/SOURCES.txt 1 2010-12-06 17:04 EGG-INFO/top_level.txt 1 2010-12-06 17:04 EGG-INFO/zip-safe 1 2010-12-06 17:04 EGG-INFO/dependency_links.txt 227 2010-12-06 17:04 EGG-INFO/PKG-INFO --------- ------- 350 5 files
Il n'y a qu'un seul dossier EGG-INFO, qui contient cinq fichiers d'informations sur les œufs. Il a disparu. Le nom de cet œuf est inconnu, version 0.0.0. C'est parce que nous n'avons rien défini dans la configuration. Évidemment, cet œuf ne peut rien faire. Ajoutez-y maintenant quelques ingrédients. Dans setup.py, la fonction setup reçoit une série de propriétés comme paramètres de configuration.
name name est le nom du package d'œufs et le nom du dossier à empaqueter. La valeur par défaut est INCONNU.
numéro de version, par défaut 0.0.0
packages Une autre fonction de setuptools, find_packages, est utilisée ici. Comme son nom l'indique, find_packages est utilisé pour empaqueter les fichiers dans le répertoire spécifié.
zip_safe est par défaut False, de sorte que le contenu du fichier de projet sera vérifié à chaque fois que le package egg est généré pour s'assurer qu'il est correct.
Il existe également des attributs descriptifs, tels que description, long_description, auteur, author_email, licence, mots-clés, plateforme, url, etc. Remplissez le fichier setup.py comme suit :
$ cat setup.py #!/usr/bin/env python #-*- coding:utf-8 -*- from setuptools import setup, find_packages setup( name = "demo", version="0.1.0", packages = find_packages(), zip_safe = False, description = "egg test demo.", long_description = "egg test demo, haha.", author = "amoblin", author_email = "amoblin@ossxp.com", license = "GPL", keywords = ("test", "egg"), platforms = "Independant", url = "", )
Créez un répertoire demo portant le même nom que le nom ci-dessus dans le répertoire egg-demo. Écrivez le fichier __init__.py dans le répertoire demo : <🎜. >
$ mkdir demo $ cat demo/__init__.py #!/usr/bin/env python #-*- coding:utf-8 -*- def test(): print "Hello, I'm amoblin." if __name__ == '__main__': test()
$ python setup.py bdist_egg $ unzip -l dist/demo-0.1.0-py2.6.egg Archive: dist/demo-0.1.0-py2.6.egg Length Date Time Name --------- ---------- ----- ---- 121 2010-12-06 17:30 demo/__init__.py 344 2010-12-06 17:46 demo/__init__.pyc 137 2010-12-06 17:46 EGG-INFO/SOURCES.txt 5 2010-12-06 17:46 EGG-INFO/top_level.txt 1 2010-12-06 17:46 EGG-INFO/zip-safe 1 2010-12-06 17:46 EGG-INFO/dependency_links.txt 227 2010-12-06 17:46 EGG-INFO/PKG-INFO --------- ------- 836 7 files
$ sudo python setup.py install running install install_dir /usr/local/lib/python2.6/dist-packages/ ... creating /usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.egg Extracting demo-0.1.0-py2.6.egg to /usr/local/lib/python2.6/dist-packages demo 0.1.0 is already the active version in easy-install.pth Installed /usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.egg Processing dependencies for demo==0.1.0 Finished processing dependencies for demo==0.1.0
$ python -c "from demo import test;test()" Hello, I'm amoblin.
packages=find_packages('src'), package_dir = {'':'src'}
$ cd /usr/local/lib/python2.6/dist-packages $ cat easy-install.pth|grep demo ./demo-0.1.0-py2.6.egg $ ls -F|grep demo demo-0.1.0-py2.6.egg/
Tutoriel Python"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!