From Fedora Project Wiki

m (1 revision(s))
No edit summary
Line 1: Line 1:
Page traduite de http://fedoraproject.org/wiki/Packaging/Python
<pre>
<pre>
:Version: 0.3
:Version: 0.4
:Dernière révision: 2 Oct , 2007
:Dernière révision: 16 Décembre , 2007
</pre>
</pre>


= Astuces sur la manière d'empaqueter des modules Python =
= Astuces sur la manière de créer des packages pour les modules Python =




Line 14: Line 16:
</pre>
</pre>


au fichier spec pour demander un version specifique de python-abi. Ce n'est plus nécessaire dans FC4 et postérieur car rpm ajoute maintenant de lui même une dépendance automatique sur python(abi).
au fichier spec pour demander un version spécifique de python-abi. Ce n'est plus nécessaire dans FC4 et postérieur car rpm ajoute maintenant de lui même une dépendance automatique sur python(abi).
 
== Architecture Système==
Si vous souhaitez tout installer dans le répertoire global du site, utiliser ce truc: définissez '''python_sitelib''' en haut de votre specfile:
 
<pre>
%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
</pre>
 
Sur un système i386 avec python-2.4, par exemple, %{python_sitelib} devient <code>/usr/lib/python2.4/site-packages</code>. Durant %install ou lorsque vous listez %files, vous pouvez utiliser le macro %{python_sitelib} pour spécifier la location (path). Par exemple:
 
<pre>
%files
%defattr(-,root,root,-)
%dir %{python_sitelib}/modulename
%{python_sitelib}/modulename/*.py
%{python_sitelib}/modulename/*.pyc
</pre>
 
{{Template:Note}} Pour les modules Python inclue dans les librairies spécifiques à l'architecture (comme quelque chose écrit en C), vous pouvez utilisez en plus:
 
<pre>
%{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
</pre>
 
Cela garantira que ce package sera installé correctement pour les libraires multi-architectures. En utilisant ces macros au lieu de modifier directement dans le specfile, vos réglages restent compatibles avec la version installé de Python même quand le répertoire racine change radicalement (par exemple, si python_sitelib) change en  %{_datadir})
 
{{Template:Warning}} Vous ne devez pas compter sur INSTALLED_FILES, car il ne peut lister les répertoires, qui ont besoin d'être spécifié dans la section %files si besoin. Utiliser les globales dans la section %files est plus sécurisant.
 
== setuptools/eggs ==
 
Dans le passé, Fedora a fait le minmum pour assurer le support d'eggs dans ses distributions. Comme egs est adapté plus largement en général, nous devons avoir une documentation plus compréhensible pour savoir comment l'utiliser. Voici un comparatif avantages/critiques pour en savoir plus. La [[Packaging/Python/Eggs|  documentation complète (en anglais)]] inclus des exemples pour savoir quoi faire.
* '''Doit être fait''': Python eggs doit être construit depuis les source. Il n'est pas possible de le glisser directement dans un répertoire.
* '''Doit être fait''': Python eggs ne peut pas télécharger de dépendances durant la compilation.
* '''Doit être fait''': Si les fichiers egg-info sont généré par des module de scripts, ils doivent être inclus dans le package.
* '''Doit être fait''': Quand un package compact est créer, il doit être installer en utilisant easy_install - pour éviter tout conflit avec le package principal.
* '''Doit être fait''': Quand sont créer plusieurs versions (pour un package compacte), un de ces packages doit contenir une version par défault qui est utilisé par "import MODULE" sans aucune procédure d'installation.
* '''Non obligatoire''': Un package qui doit être utilisé par une autre interface via une interface egg devrait contenir des infos pour egg.

Revision as of 14:33, 20 June 2008

Page traduite de http://fedoraproject.org/wiki/Packaging/Python

:Version: 0.4
:Dernière révision: 16 Décembre , 2007

Astuces sur la manière de créer des packages pour les modules Python

Version de Python

Dans le passé (FC3 et antérieur) il était obligatoire d'ajouter la ligne

Requires:       python-abi = %(%{__python} -c "import sys ; print sys.version[[3]] ")

au fichier spec pour demander un version spécifique de python-abi. Ce n'est plus nécessaire dans FC4 et postérieur car rpm ajoute maintenant de lui même une dépendance automatique sur python(abi).

Architecture Système

Si vous souhaitez tout installer dans le répertoire global du site, utiliser ce truc: définissez python_sitelib en haut de votre specfile:

%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}

Sur un système i386 avec python-2.4, par exemple, %{python_sitelib} devient /usr/lib/python2.4/site-packages. Durant %install ou lorsque vous listez %files, vous pouvez utiliser le macro %{python_sitelib} pour spécifier la location (path). Par exemple:

%files
%defattr(-,root,root,-)
%dir %{python_sitelib}/modulename
%{python_sitelib}/modulename/*.py
%{python_sitelib}/modulename/*.pyc

Note.png Pour les modules Python inclue dans les librairies spécifiques à l'architecture (comme quelque chose écrit en C), vous pouvez utilisez en plus:

%{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}

Cela garantira que ce package sera installé correctement pour les libraires multi-architectures. En utilisant ces macros au lieu de modifier directement dans le specfile, vos réglages restent compatibles avec la version installé de Python même quand le répertoire racine change radicalement (par exemple, si python_sitelib) change en  %{_datadir})

Stop (medium size).png Vous ne devez pas compter sur INSTALLED_FILES, car il ne peut lister les répertoires, qui ont besoin d'être spécifié dans la section %files si besoin. Utiliser les globales dans la section %files est plus sécurisant.

setuptools/eggs

Dans le passé, Fedora a fait le minmum pour assurer le support d'eggs dans ses distributions. Comme egs est adapté plus largement en général, nous devons avoir une documentation plus compréhensible pour savoir comment l'utiliser. Voici un comparatif avantages/critiques pour en savoir plus. La documentation complète (en anglais) inclus des exemples pour savoir quoi faire.

  • Doit être fait: Python eggs doit être construit depuis les source. Il n'est pas possible de le glisser directement dans un répertoire.
  • Doit être fait: Python eggs ne peut pas télécharger de dépendances durant la compilation.
  • Doit être fait: Si les fichiers egg-info sont généré par des module de scripts, ils doivent être inclus dans le package.
  • Doit être fait: Quand un package compact est créer, il doit être installer en utilisant easy_install - pour éviter tout conflit avec le package principal.
  • Doit être fait: Quand sont créer plusieurs versions (pour un package compacte), un de ces packages doit contenir une version par défault qui est utilisé par "import MODULE" sans aucune procédure d'installation.
  • Non obligatoire: Un package qui doit être utilisé par une autre interface via une interface egg devrait contenir des infos pour egg.