在Python中通过自省列出所需的软件包
问题描述:
如何通过运行Python或IPython实例的自省来列出需要的软件包?在Python中通过自省列出所需的软件包
我经常从一个非常安装的conda环境开始开发,该环境具有完整的Anaconda发行版,并且安装了更多的完整版本。当我希望共享代码时,我希望能够为只包含当前加载在解释器中的包的conda吐出requirements.txt
的pip或environment.yml
。
我该怎么做?
答
你可以使用python builtin包modulefinder来测试你的脚本的模块。例如:
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()))
建立从加载模块到包的关系将是一项复杂的任务。一般来说,我建议开始在空的环境下开发。 –
@克劳斯不conda保持这样的映射? –
很容易获得加载的模块的名称,但它们不一定是conda或pip所需的名称。许多内置和“私人”模块将在列表中。 –