2 votes

Comment distribuer tout le contenu du répertoire Root à un répertoire portant ce nom ?

J'ai un projet nommé myproj structuré comme

/myproj
    __init__.py
    module1.py
    module2.py
    setup.py

mon setup.py ressemble à ceci

from distutils.core import setup

setup(name='myproj',
      version='0.1',
      description='Does projecty stuff',
      author='Me',
      author_email='me@domain.com',
      packages=[''])

Mais cela place module1.py y module2.py dans le répertoire d'installation.


Comment puis-je spécifier setup de sorte que le répertoire /myproj et tout son contenu est déposé dans le répertoire d'installation ?

1voto

metatoaster Points 9427

Dans votre myproj Répertoire racine pour ce projet, vous voulez déplacer module1.py y module2.py dans un répertoire nommé myproj sous cela, et si vous souhaitez maintenir la compatibilité avec Python < 3.3, ajoutez une balise __init__ .py là-dedans.

├── myproj
│   ├── __init__.py
│   ├── module1.py
│   └── module2.py
└── setup.py

Vous pouvez également envisager d'utiliser setuptools au lieu de seulement distutils. setuptools fournissent beaucoup plus de méthodes d'aide et d'attributs supplémentaires qui rendent la configuration de ce fichier beaucoup plus facile. Voici le strict minimum setup.py Je construirais pour le projet ci-dessus :

from setuptools import setup, find_packages

setup(name='myproj',
      version='0.1',
      description="My project",
      author='me',
      author_email='me@example.com',
      packages=find_packages(),
      )

En exécutant l'installation, vous devriez voir des lignes comme celles-ci :

copying build/lib.linux-x86_64-2.7/myproj/__init__.py -> build/bdist.linux-x86_64/egg/myproj
copying build/lib.linux-x86_64-2.7/myproj/module1.py -> build/bdist.linux-x86_64/egg/myproj
copying build/lib.linux-x86_64-2.7/myproj/module2.py -> build/bdist.linux-x86_64/egg/myproj

Cela signifie que le setup script a récupéré les fichiers sources requis. Lancez l'interpréteur python (de préférence en dehors de ce répertoire de projet) pour vous assurer que ces modules peuvent être importés (pas à cause de l'importation relative).

Par contre, si vous souhaitez fournir ces modules au niveau de la racine, vous devez absolument déclarer py_modules explicitement.

Enfin, le Guide de l'utilisateur de Python Packaging est une bonne ressource pour les questions plus spécifiques que l'on peut se poser sur la construction de paquets python distribuables.

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