Pour la plupart, c'est une tentative de regarder l'emballage, la distribution, le côté, pas la mécanique de l' import
. Malheureusement, l'emballage est l'endroit où Python offre un moyen de plus d'une façon de le faire. Je suis juste essayer d'obtenir le roulement de boule, j'espère que d'autres de contribuer à combler ce qui me manque ou signaler des erreurs.
Tout d'abord il y a un peu de désordre de la terminologie ici. Un répertoire contenant un __init__.py
le fichier est un ensemble. Cependant, la plupart de ce dont nous parlons ici sont des versions spécifiques de paquets publié sur PyPI, l'un des miroirs, ou dans un fournisseur de système de gestion de paquets comme Debian Apt, de Redhat Yum, Fink, Macports, Homebrew, ou ActiveState est pypm.
La publication de ces paquets sont ce que les gens essaient d'appeler des "Distributions" aller de l'avant dans une tentative d'utilisation de "Package" que comme le langage Python construire. Vous pouvez voir quelques-unes que l'utilisation de la PEP-376 PEP-376.
Maintenant, la liste de vos mots clés se rapportent à différents aspects de l'Python Écosystème:
Recherche et publication python distributions:
- PyPI (aka le fromage boutique)
- PyPI Miroirs
- Divers outils de gestion de paquets / systèmes: apt, yum, fink, macports, homebrew
- pypm (ActiveState l'alternative à PyPI)
Le ci-dessus sont tous les services qui fournissent un endroit pour publier des distributions Python dans divers formats. Certains, comme PyPI miroirs et apt / dépôts yum peut être exécuté sur votre ordinateur local ou au sein de votre réseau d'entreprises, mais les gens utilisent généralement l'officielles. La plupart, si pas tous, de fournir un outil (ou de plusieurs outils dans le cas de PyPI) pour aider à trouver et télécharger des distributions.
Les bibliothèques utilisées pour créer et installer des distributions:
-
setuptools
/ Distribuer
distutils
Distutils est la norme de l'infrastructure sur laquelle les paquets Python sont compilées et intégrées dans les distributions. Il y a une tonne de fonctionnalités en distutils
, mais la plupart des gens connaissent:
from distutils.core import setup
setup(name='Distutils',
version='1.0',
description='Python Distribution Utilities',
author='Greg Ward',
author_email='gward@python.net',
url='http://www.python.org/sigs/distutils-sig/',
packages=['distutils', 'distutils.command'],
)
Et dans une certaine mesure, c'est un plus de ce que vous avez besoin. Avec l'accord préalable et 9 lignes de code que vous avez suffisamment d'informations pour installer un pur paquet Python et aussi le minimum de métadonnées nécessaires pour publier le package de distribution sur PyPI.
Setuptools fournit les points d'ancrage nécessaires à l'appui de l'Œuf format et l'ensemble de ses fonctionnalités et ses défauts. Distribuer est une alternative à Setuptools qui ajoute quelques fonctionnalités tout en essayant d'être la plupart du temps compatible. Je crois Distribuer va être inclus dans Python 3 comme le successeur de Distutil de l' from distutils.core import setup
.
Les deux Setuptools et Distribuer fournir une version personnalisée de l' distutils
commande du programme d'installation
qui ne fait que des choses utiles comme support de l'Œuf format.
Python Formats De Distribution:
Les Distributions sont généralement fournis soit en tant que source d'archives (archive ou zipfile). La méthode standard pour installer une distribution source est par le téléchargement et la décompression de l'archive, puis l'exécution de l' setup.py
le fichier à l'intérieur.
Par exemple, pour télécharger, compiler et installer le Pygments de la syntaxe de la bibliothèque:
curl -O -G http://pypi.python.org/packages/source/P/Pygments/Pygments-1.4.tar.gz
tar -zxvf Pygments-1.4.tar.gz
cd Pygments-1.4
python setup.py build
sudo python setup.py install
Sinon, vous pouvez télécharger l'Œuf fichier et l'installer. Généralement ceci est accompli en utilisant easy_install ou pip:
sudo easy_install pygments
or
sudo pip install pygments
Les œufs ont été inspirés par Java Jarfiles et ils ont quelques caractéristiques que vous devriez lire sur ici
Paquet Python Formats:
- non compressé répertoires
- zipimport (compressés zip répertoires)
Normal paquet python est simplement un répertoire contenant un __init__.py
le fichier et un nombre arbitraire de modules supplémentaires ou des sous-packages. Python dispose également d'un support pour la recherche et le chargement de code source à l'intérieur *.les fichiers zip aussi longtemps qu'ils sont inclus dans l' PYTHONPATH
(sys.path
).
L'Installation De Paquets Python:
-
easy_install
: l'origine de l'œuf de l'outil d'installation, dépend setuptools
-
pip
: à l'heure actuelle le moyen le plus populaire pour installer les paquets python. Semblable à l' easy_install
mais plus souple et a quelques fonctionnalités intéressantes comme les exigences de fichiers à l'aide du document de dépendances et de reproduire les déploiements.
-
pypm
, apt
, yum
, fink, etc
La Gestion De L'Environnement / De Déploiement Automatisé:
bento
buildout
-
virtualenv
(et virtualenvwrapper
)
Les outils ci-dessus sont utilisés pour aider à automatiser et de gérer les dépendances d'un projet Python. Fondamentalement, ils vous donnent des outils pour décrire ce que les distributions de votre application et d'automatiser l'installation de ces versions spécifiques de vos dépendances.
Lieux de Paquets / Distributions:
- site-packages
PYTHONPATH
- le répertoire de travail courant (dépend de votre système d'exploitation et les paramètres de l'environnement)
Par défaut, l'installation d'une distribution python est d'aller le déposer dans le site-packages répertoire. Ce répertoire est généralement quelque chose comme /usr/lib/pythonX.Y/site-packages
.
Un simple programmatique façon de trouver votre site-packages répertoire:
from distuils import sysconfig
print sysconfig.get_python_lib()
Des façons de modifier votre PYTHONPATH:
Python import trouverez uniquement les paquets qui sont situés dans l'un des répertoires inclus dans votre PYTHONPATH
.
Vous pouvez consulter et modifier votre chemin à partir de l'intérieur de Python en accédant à:
import sys
print sys.path
sys.path.append("/home/myname/lib")
En outre, vous pouvez définir l' PYTHONPATH
variable d'environnement comme vous le feriez de toute autre variable d'environnement de votre système d'exploitation, ou vous pouvez utiliser:
- .la pth fichiers: *.la pth fichiers situés dans les répertoires qui sont déjà sur votre
PYTHONPATH
lecture de chaque ligne de l' *.la pth fichier est ajouté à votre PYTHONPATH
. En fait toutes les fois que vous copiez un paquet dans un répertoire sur votre PYTHONPATH
vous pouvez créer un mypackages.pth
. Lire plus sur *.la pth fichiers: module du site
- l'œuf de fichiers liens: structure Interne de python œufs qu'ils sont une plate-forme alternative aux liens symboliques. La création d'un œuf lien de fichier est similaire à la création d'une pth fichier.
-
site.py
modifications
Pour ajouter la-dessus /home/myname/lib
de site-packages avec un *.la pth fichier, vous devez créer un *.la pth fichier. Le nom du fichier n'a pas d'importance, mais vous devriez probablement choisir quelque chose de sensible.
Créons myname.pth
:
# myname.pth
/home/myname/lib
C'est tout. Baisse, ce qui en sysconfig.get_python_lib()
sur votre système ou tout autre répertoire de votre PYTHONPATH
et /home/myname/lib
sera ajouté au chemin d'accès.