Python setup.py ajouter un dossier

a marqué ce sujet comme résolu.
Auteur du sujet

bonjour, j’essaye de générer un rpm avec python. voici mon fichier setup.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python

import distutils.core

name = 'myprog'

distutils.core.setup(name=name,
    version='1.0',
    author="Firstname Surname",
    author_email="Firstname.Surname@cern.ch",
    url="http://cern.ch",
    description="Short description of your tool",
    long_description="Long description of your tool",
    license="ASL",

    data_files=[
        ('/usr/myprog/', ['./licence.txt']),
        ('/usr/myprog/', ['./myfolder/*']),
    ],
)

`

tous marche sauf cette ligne : (’/usr/myprog/’, [’./myfolder/*’]),

je voudrais que python mette tous mes fichiers (et sous dossier) de ./myfolder dans mon rpm à l’emplacement /usr/myprog/

cela ne marche que pour des fichiers, par exemple si j’installe mon rpm généré, mon fichier licence.txt sera bien dans /usr/myprog/licence.txt mais je ne peut pas inclure de dossier, pourriez vous m’aider ?

+0 -0

Cette réponse a aidé l’auteur du sujet

Essaie de remplacer :

1
2
3
4
    data_files=[
        ('/usr/myprog/', ['./licence.txt']),
        ('/usr/myprog/', ['./myfolder/*']),
    ],

par

1
2
3
    data_files=[
        ('/usr/myprog/', ['./licence.txt'] + list(explore_dir('./myfolder/')),
    ],

et code la fonction

1
2
3
4
def explore_dir(directory):
    for root, _, files in os.walk(directory):
        for f in files:
            yield str(os.pathlib.Path(root, f))
+1 -0

Pour plus d’information, dans datafile tu mets des tuples qui contiennent:

  • le dossier cible
  • une liste de fichier à mettre dans le dossier cible

C’est pour ça qu’il faut d’un côté itérer sur tous les fichiers et de l’autre ne mettre qu’un seul tuple par dossier cible.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte