2017-06-16 2 views
0

Est-il possible d'utiliser la configuration dynamique dans un fichier setup.py?python setuptools s'installe avec une configuration dynamique dans setup.py

J'ai une application python qui est une collection de scripts pour faire des requêtes à une API backend. Je voudrais personnaliser dynamiquement les scripts qui sont installés, éventuellement en passant un drapeau à la commande pip install.

Un exemple setup.py

from setuptools import setup, find_packages 
setup(
    name='my-app', 
    version='0.0.1', 
    packages=find_packages(), 
    scripts=['bin/do_stuff', 
      'bin/do_other_stuff' 
    ], 
) 

Je souhaite modifier dynamiquement le contenu des « scripts », d'ajouter des chemins supplémentaires, sur la base d'une installation drapeau.

Est-ce possible? Pip

Répondre

1

pip permet de passer des paramètres non standard à setup.py via --install-option mais vous devez supprimer le paramètre de sys.argv avant d'appeler setup(). Alors vous mieux être est de passer des informations supplémentaires via des variables d'environnement:

MY_EXTRA_INFO=add_script pip install 

Obtenez le var dans setup.py:

if 'MY_EXTRA_INFO' in os.environ: 
    add_scripts = ['bin/add_script'] 
else: 
    add_scripts = [] 

setup(
    scripts=['bin/do_stuff', 
      'bin/do_other_stuff' 
    ] + add_scripts, 
) 
+0

Great, merci - et comment puis-je passer la condition de 'pépin install' –

+0

J'ai étendu la réponse. – phd