J'ai créé une installation de paquet python avec un fichier setup.py, et je veux copier un fichier de données dans le dossier (créé pour l'occasion) ~/.did. Le problème est que je dois appeler setup.py avec les droits sudo, comme il écrit dans/usr/local/... Donc quand mon fichier de données est copié dans ~/.did, seul l'utilisateur root a un accès en écriture au fichier .Comment chmod fichiers dans un python setup.py?
J'ai alors décidé d'ajouter un appel à os.chmod() après la fonction setup(), mais j'aimerais savoir si quelqu'un avait un moyen 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='Daily Image Downloader',
author='Luc Mazon',
author_email='[email protected]',
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 est pas un fichier python, j'ai aussi créé un fichier MANIFEST.in avec la ligne suivante dans le:
include did.xml
la structure globale de mon colis est la suivante:
did-1.0
| didlib
| | __init__.py
| | variouspyfiles.py
| doc
| |-did.1.gz
| MANIFEST.in
| did.xml
| did
| setup.py
Ceci est une très mauvaise idée, car il ne sera disponible que pour un seul utilisateur. Les données à l'échelle du système doivent être placées sous '/ usr/share' ou similaire. –
le fichier did.xml est complètement dépendant de l'utilisateur (en fait, c'est le fichier de configuration pour cet utilisateur spécifique), donc je pense que le placer dans ~/.did est assez bon – kluck
Ensuite, votre programme devrait le créer lors de la première exécution. –