2009-03-10 5 views
1

J'ai tendance à développer mes applications dans le 'setup.py develop' -mode. Je voudrais que la configuration passe automagiquement en mode de production lorsque le programme est 'installé.py'.déterminer si le module python est installé ou en mode développement par programmation

Cela peut être fait par de mauvais hacks, comme vérifier si le répertoire d'installation contient 'setup.py', mais je me demande si pkg_resources peut le faire pour moi d'une manière ou d'une autre.

Répondre

4

En effet, pkg_resources will do that:

dist = pkg_resources.get_distribution('your-app') 
if dist.precedence == pkg_resources.DEVELOP_DIST: 
    # package is in development mode 
    ... 
+0

Vous apprenez quelque chose de nouveau tous les jours. :) –

5

N'est-il pas plus facile et plus propre de simplement définir une variable d'environnement sur votre machine de développement et de tester os.environ['development_mode'] (ou un réglage de votre choix)?

+0

+1: plus c'est simple, mieux c'est. –

+0

Peut-être. Bien qu'il semble que ce n'était pas difficile d'obtenir cette information via pkg_resources. – Cheery

+0

Non, mais c'est toujours une mauvaise idée de baser le comportement sur le mode d'installation. Si vous voulez déboguer un morceau particulier de code qui ne fonctionne qu'en dehors du mode développement, vous devez éditer le code ou réinstaller le paquet. Avec le paramètre d'environnement, vous venez de définir la variable. –

0

Une autre option est d'utiliser virtualenv. Votre environnement de développement pourrait alors être identique à votre environnement de production. Setuptools est une chose assez lourde à dépendre, à mon avis.

Questions connexes