在Python中通过内省列出所需的包

在Python中通过内省列出所需的包,python,pip,conda,introspection,requirements.txt,Python,Pip,Conda,Introspection,Requirements.txt,如何通过运行Python或IPython实例的内省列出requires包 我经常从一个负载非常大的conda环境开始开发,该环境有完整的Anaconda发行版和一个完整的lo more安装。当我希望共享代码时,我希望能够为pip吐出requirements.txt,或为conda吐出environment.yml,仅包含当前加载在解释器中的包 我该怎么做呢?您可以使用python内置包测试脚本中的模块。比如: 从modulefinder导入modulefinder finder=ModuleFi

如何通过运行Python或IPython实例的内省列出requires包

我经常从一个负载非常大的conda环境开始开发,该环境有完整的Anaconda发行版和一个完整的lo more安装。当我希望共享代码时,我希望能够为pip吐出
requirements.txt
,或为conda吐出
environment.yml
,仅包含当前加载在解释器中的包


我该怎么做呢?

您可以使用python内置包测试脚本中的模块。比如:

从modulefinder导入modulefinder
finder=ModuleFinder()
finder.run_脚本('bacon.py'))
打印('加载的模块:')
对于finder.modules.items()中的name和mod:
打印('%s:'%name,end='')
打印(“,”.join(列表(mod.globalnames.keys())[:3]))
打印('-'*50)
打印('未导入的模块:')
打印('\n'.join(finder.badmodules.keys()))

您可以使用python内置包测试脚本中的模块。比如:

从modulefinder导入modulefinder
finder=ModuleFinder()
finder.run_脚本('bacon.py'))
打印('加载的模块:')
对于finder.modules.items()中的name和mod:
打印('%s:'%name,end='')
打印(“,”.join(列表(mod.globalnames.keys())[:3]))
打印('-'*50)
打印('未导入的模块:')
打印('\n'.join(finder.badmodules.keys()))

从加载的模块到包建立关系将是一项复杂的任务。一般来说,我建议在一个空的环境中开始开发。@Klaus没有维护这样的映射吗?很容易获得加载的模块的名称,但它们不一定是conda或pip所需的名称。还有很多内置的和“私有”的模块会出现在列表中。@Klaus conda&pip必须维护自己的模块->打包映射,才能让他们的remove命令正常工作。应该可以通过编程方式访问它。从加载的模块到包构建关系将是一项复杂的任务。一般来说,我建议在一个空的环境中开始开发。@Klaus没有维护这样的映射吗?很容易获得加载的模块的名称,但它们不一定是conda或pip所需的名称。还有很多内置的和“私有”的模块会出现在列表中。@Klaus conda&pip必须维护自己的模块->打包映射,才能让他们的remove命令正常工作。应该可以通过编程方式访问它。