2017-07-28 6 views
0

Comment puis-je lister les paquets requis par introspection en exécutant une instance Python ou IPython?Liste des paquets requis par introspection en Python

Je commence souvent le développement à partir d'un environnement de conda très chargé qui a la distribution complète d'Anaconda et un tout plus installé. Lorsque je souhaite partager du code, je voudrais être en mesure de cracher un requirements.txt pour pip ou environment.yml pour conda constitué uniquement des paquets actuellement chargés dans l'interpréteur.

Comment est-ce que je peux faire ceci?

+2

Pour construire la ralation des modules chargés à l'emballage serait une tâche complexe. En général, je conseille de commencer à développer avec un environnement vide. –

+1

@ Klaus ne maintient pas une telle cartographie? –

+0

Il est facile d'obtenir les noms des modules chargés, mais ils ne sont pas nécessairement les noms requis pour conda ou pip. Et beaucoup de modules intégrés et "privés" seront dans la liste. –

Répondre

3

Vous pouvez utiliser le package intégré python modulefinder pour tester votre script pour les modules. Quelque chose comme:

from modulefinder import ModuleFinder 

finder = ModuleFinder() 
finder.run_script('bacon.py') 

print('Loaded modules:') 
for name, mod in finder.modules.items(): 
    print('%s: ' % name, end='') 
    print(','.join(list(mod.globalnames.keys())[:3])) 

print('-'*50) 
print('Modules not imported:') 
print('\n'.join(finder.badmodules.keys()))