python如何检测安装文件损坏_检查是否安装了Python包

该博客介绍了如何使用Python的subprocess和sys模块检查已安装的Python包。通过示例代码展示了如何获取并解析pip freeze的输出,以列出所有安装的包,并检查特定包(如requests)是否存在。这种方法适用于pip安装和系统安装的包,但可能不适用于开发模式安装的包。
摘要由CSDN通过智能技术生成

更新的答案

更好的方法是:import subprocess

import sys

reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze'])

installed_packages = [r.decode().split('==')[0] for r in reqs.split()]

结果是:print(installed_packages)

[

"Django",

"six",

"requests",

]

检查是否安装了requests:if 'requests' in installed_packages:

# Do something

为什么这样?有时你会遇到应用程序名冲突。从应用程序命名空间导入不会提供系统上安装的内容的完整图片。

注意,建议的解决方案有效:使用pip从PyPI或任何其他替代源(如pip install http://some.site/package-name.zip或任何其他存档类型)安装时。

使用python setup.py install手动安装时。

从系统存储库安装时,例如sudo apt install python-requests。

可能无效的情况:以开发模式安装时,例如python setup.py develop。

以开发模式安装时,例如pip install -e /path/to/package/source/。

旧答案

更好的方法是:import pip

installed_packages = pip.get_installed_distributions()

对于pip>=10.x,请使用:from pip._internal.utils.misc import get_installed_distributions

为什么这样?有时你会遇到应用程序名冲突。从应用程序命名空间导入不会提供系统上安装的内容的完整图片。

结果,会得到一个pkg_resources.Distribution对象的列表。请参见以下示例:print installed_packages

[

"Django 1.6.4 (/path-to-your-env/lib/python2.7/site-packages)",

"six 1.6.1 (/path-to-your-env/lib/python2.7/site-packages)",

"requests 2.5.0 (/path-to-your-env/lib/python2.7/site-packages)",

]

列一个清单:flat_installed_packages = [package.project_name for package in installed_packages]

[

"Django",

"six",

"requests",

]

检查是否安装了requests:if 'requests' in flat_installed_packages:

# Do something

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值