3 votes

Comment modifier les autorisations des fichiers dans un setup.py python ?

J'ai créé une installation de paquet Python avec un setup.py, et je veux qu'il copie un fichier de données dans le dossier (créé pour l'occasion) ~/.did. Le problème est que je dois appeler setup.py avec des droits sudo, car il écrit dans /usr/local/... Ainsi, lorsque mon fichier de données est copié dans ~/.did, seul l'utilisateur root a accès en écriture au fichier.

J'ai donc décidé d'ajouter un appel à os.chmod() après la fonction setup(), mais j'aimerais savoir si quelqu'un avait une manière plus propre de le faire.

Voici mon fichier setup.py :

#!/usr/bin/env python

from distutils.core import setup
import os

home=os.path.expanduser('~')

setup(name='did',
      version='1.0',
      description='Téléchargeur d'images quotidien',
      author='Luc Mazon',
      author_email='mon@mail.com',
      url='',
      license='GNU GPL v3',
      scripts=['did'],
      packages=['didlib'],
      data_files=[
                  ('/usr/share/man/man1', ['doc/did.1.gz']),
                  (home+'/.did', ['did.xml'])
                 ]
     )

os.chmod(home+'/.did/did.xml', 0666)

Comme did.xml n'est pas un fichier Python, j'ai également créé un fichier MANIFEST.in avec la ligne suivante :

include did.xml

La structure globale de mon paquet est la suivante :

did-1.0
 | didlib
 |  | __init__.py
 |  | diversfichierspy.py
 | doc
 |  | -did.1.gz
 | MANIFEST.in
 | did.xml
 | did
 | setup.py

4voto

Keith Points 13800

Je pense qu'il serait mieux, et plus habituel, de ne pas écrire de fichiers de configuration dans le répertoire personnel de l'installateur. Et qu'en est-il des autres utilisateurs? Il serait préférable que votre code vérifie, lors de l'initialisation, si ce fichier existe pour l'utilisateur qui l'exécute et n'en ajoute un nouveau que s'il n'existe pas.

0voto

ykatchou Points 2829

Pour moi, vous cherchez soit chown (changer de propriétaire) soit chgrp (changer de groupe).

De plus, je ne vois pas pourquoi vous faites sudo, vous avez seulement besoin d'un accès en écriture à ces fichiers. Donc ajoutez simplement chmod -R gou+rx setup_dir afin de pouvoir parcourir les installations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X