列出应用程序使用的python包

2024-05-14 22:49:28 发布

您现在位置:Python中文网/ 问答频道 /正文

def get_pkgs():
    pkgs = []
    for importer, modname, ispkg in \
            pkgutil.walk_packages(path=None, onerror=lambda x: None):
    pkgs.append(modname)
    return pkgs

上面的代码片段为我提供了发行版中的所有python包。有人能给我一个建议,让python应用程序从这些包中取出所有的包吗?在


Tags: pathlambdainnoneforgetpackagesdef
2条回答

Snakefood很好,正如svenmarnach已经回答的那样,但是这提供了所有的文件依赖关系,我不确定它是否会告诉您使用了哪些包,而不是每个文件依赖项。在

对于Python Package Index中可用的包,可以使用virtualenv(和pip)来获得所需/已用包的简单列表。在

例如,假设您还安装了优秀的virtualenvwrapper工具(高度推荐),下面是一个序列,显示了pylint的软件包要求:

$ mkvirtualenv pylint_dep_check  no-site-packages
New python executable in pylint_dep_check/bin/python
Installing setuptools............done.
$ pip freeze   #Note the wsgiref 'bug' where it always shows up
wsgiref==0.1.2
$ workon pylint_dep_check
(pylint_dep_check) $ pip install pylint
(... snipped lengthy install text ...)
(pylint_dep_check) $ pip freeze
logilab-astng==0.21.1
logilab-common==0.55.0
pylint==0.23.0
unittest2==0.5.1
wsgiref==0.1.2

不知道 no-site-packagesvirtualenv创建选项的所有重要用途(惊喜!)你的发行版保证你的网站没有安装全新的软件包。这样,你安装的应用程序需要什么就很清楚了。在

如果这是您开发的应用程序,跟踪依赖关系的一个好方法(也是一个很好的/干净的工作方式)是在一个干净的virtualenv(再次使用 no-site-packages选项创建)中设置该应用程序,然后再次使用pip freeze来确定安装了哪些包使其工作。在

使用 no-site-packages选项启动“全新”python安装的能力非常有用。我对所有的应用程序都这样做,并测试我感兴趣的包,而不会弄乱我的工作区。在

如果你还没有使用virtualenv和pip,那就开始吧。下面是一个很好的介绍: http://mathematism.com/2009/07/30/presentation-pip-and-virtualenv/

最简单的方法是使用Python依赖性分析工具snakefood。在

相关问题 更多 >

    热门问题