2017-03-03 1 views
1

Y at-il un moyen de vérifier si un paquet Python a été installé normalement (pip install/setup.py install) ou en mode éditable/lien d'oeuf (pip install -e/setup.py develop)?Vérifiez si un paquet python a été installé en mode 'éditable' (lien d'oeufs) ou non?

Je sais que je pourrais vérifier si le chemin vers le paquet contient site-packages ce qui signifierait très probablement une installation "non-éditable", mais cela semble extrêmement sale et je préfère éviter cela.


La raison pour laquelle je suis en train de vérifier cela est que ma demande est la vérification des fichiers de configuration dans différents endroits, tels que /etc/myapp.conf et ~/.myapp.conf. Pour les développeurs, je voudrais vérifier <pkgdir>/myapp.conf mais puisque je montre la liste des emplacements possibles au cas où aucune configuration n'a été trouvée, je ne veux vraiment pas inclure l'option pkgdir lorsque le paquet a été installé sur site-packages (puisque les utilisateurs ne devrait pas créer un fichier de configuration là-dedans).

Répondre

0

pip contient code pour cela (il est utilisé par pip freeze pour préfixer la ligne avec -e). Depuis l » API pip n'est pas garanti d'être stable, il est préférable de copier le code dans la propre application au lieu de l'importer à partir pip:

def dist_is_editable(dist): 
    """Is distribution an editable install?""" 
    for path_item in sys.path: 
     egg_link = os.path.join(path_item, dist.project_name + '.egg-link') 
     if os.path.isfile(egg_link): 
      return True 
    return False 

Le code est MIT-licence il devrait donc être sûr de copier & coller dans à peu près n'importe quel projet.