如何检查是否安装了python_检查是否安装了Python Package
检查是否安装了Python Package
在Python脚本中检查包是否安装的好方法是什么? 我知道解释器很容易,但是我需要在脚本中完成它。
我想我可以检查系统中是否有安装过程中创建的目录,但我觉得有更好的方法。 我正在尝试确保安装了Skype4Py软件包,如果没有,我会安装它。
我完成检查的想法
检查典型安装路径中的目录
尝试导入包,如果抛出异常,则安装包
10个解决方案
82 votes
如果你的意思是python脚本,只需执行以下操作:
try:
import mymodule
except ImportError, e:
pass # module doesn't exist, deal with it.
Christopher answered 2019-09-16T21:10:42Z
40 votes
更新的答案
更好的方法是:
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
为什么这样? 有时你有app name collisions。 从应用程序命名空间导入并不能让您全面了解系统上安装的内容。
老答案
更好的方法是:
import pip
installed_packages = pip.get_installed_distributions()
对于pip> = 10.x使用:
from pip._internal.utils.misc import get_installed_distributions
为什么这样? 有时你有app name collisions。 从应用程序命名空间导入并不能让您全面了解系统上安装的内容。
因此,您将获得requests对象的列表。 请参阅以下示例:
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
Artur Barseghyan answered 2019-09-16T21:11:57Z
15 votes
如果您想从终端进行检查,您可以运行
pip3 show package_name
如果没有返回任何内容,则不会安装该软件包。
如果您想要自动执行此检查,那么例如,如果丢失则可以安装它,您可以在bash脚本中使用以下内容:
pip3 show package_name 1>/dev/null #pip for Python 2
if [ $? == 0 ]; then
echo "Installed" #Replace with your actions
else
echo "Not Installed" #Replace with your actions, 'pip3 install --upgrade package_name' ?
fi
Ognjen Vukovic answered 2019-09-16T21:12:33Z
12 votes
从Python 3.3开始,您可以使用find_spec()方法
import importlib.util
import sys
# For illustrative purposes.
package_name = 'pandas'
spec = importlib.util.find_spec(package_name)
if spec is None:
print(package_name +" is not installed")
ice.nicer answered 2019-09-16T21:12:57Z
4 votes
作为这个答案的延伸:
对于Python 2. *,pip show numpy将执行相同的任务。
例如pip show numpy将返回以下内容或类似内容:
Name: numpy
Version: 1.11.1
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: NumPy Developers
Author-email: numpy-discussion@scipy.org
License: BSD
Location: /home/***/anaconda2/lib/python2.7/site-packages
Requires:
Required-by: smop, pandas, tables, spectrum, seaborn, patsy, odo, numpy-stl, numba, nfft, netCDF4, MDAnalysis, matplotlib, h5py, GridDataFormats, dynd, datashape, Bottleneck, blaze, astropy
KutalmisB answered 2019-09-16T21:13:33Z
2 votes
您可以使用setuptools中的pkg_resources模块。 例如:
import pkg_resources
package_name = 'cool_package'
try:
cool_package_dist_info = pkg_resources.get_distribution(package_name)
except pkg_resources.DistributionNotFound:
print('{} not installed'.format(package_name))
else:
print(cool_package_dist_info)
请注意,python模块和python包之间存在差异。 包可以包含多个模块,模块的名称可能与包名称不匹配。
Lyudmil Nenov answered 2019-09-16T21:14:03Z
1 votes
我想在本主题中添加一些我的想法/发现。我正在编写一个脚本来检查自定义程序的所有要求。 python模块也有很多检查。
这有一个小问题
try:
import ..
except:
..
解。在我的情况下,其中一个python模块名为python-nmap,但你用nmap导入它,因为你看到名称不匹配。 因此,使用上述解决方案的测试返回False结果,并且它还在命中时导入模块,但可能不需要使用大量内存进行简单的测试/检查。
我也发现了
import pip
installed_packages = pip.get_installed_distributions()
python-nmap将只有已经安装了pip的软件包。在我的系统python-nmap返回nmap python模块,而installed_packages只有1,我手动安装(python-nmap)。
我知道下面的另一个解决方案可能与问题无关,但我认为将测试功能与执行安装的测试功能分开是一个很好的做法,它可能对某些人有用。
解决方案对我有用。 它基于这个答案如何检查python模块是否存在而不导入它
from imp import find_module
def checkPythonmod(mod):
try:
op = find_module(mod)
return True
except ImportError:
return False
注意:此解决方案也找不到名称python-nmap的模块,我必须使用nmap(易于使用)但在这种情况下模块将不会被加载到内存中。
Gergely M answered 2019-09-16T21:15:13Z
0 votes
如果您希望脚本安装丢失的软件包并继续,您可以执行以下操作(例如'python-krbV'软件包中的'krbV'模块示例):
import pip
import sys
for m, pkg in [('krbV', 'python-krbV')]:
try:
setattr(sys.modules[__name__], m, __import__(m))
except ImportError:
pip.main(['install', pkg])
setattr(sys.modules[__name__], m, __import__(m))
Alexander Zhak answered 2019-09-16T21:15:38Z
0 votes
一种快速的方法是使用python命令行工具。只需输入import 如果缺少模块,则会看到错误。
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
>>> import sys
>>> import jocker
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named jocker
$
Deepu Sahni answered 2019-09-16T21:16:03Z
-1 votes
去选项#2。 如果抛出ImportError,则未安装包(或不在sys.path中)。
eduffy answered 2019-09-16T21:16:28Z
如何检查是否安装了python_检查是否安装了Python Package相关推荐
- pip安装mysql python_使用pip安装MySQL在Windows上安装MySQL python不工作?
我无法安装mysql包,并且已经研究了许多解决方案,但都没有解决问题.请帮帮我,告诉我需要做什么才能使这项工作. 运行命令后,将显示以下内容:Collecting mysql-python Using ...
- 安装EBS前期检查工具 - RDA - Health Check / Validation Engine Guide
参考文档 RDA - Health Check / Validation Engine Guide (文档 ID 250262.1) 先下载 RDA 补丁包. Download HCV ...
- 检查oracle安装,oracle安装前环境检查
oracle安装前需要检查系统环境,需保证系统中有如下包: binutils-2.17.50.0.6,compat-libstdc++-33-3.2.3,compat-libstdc++-33-3.2 ...
- [转载]安装Oracle11gR2先决条件检查失败的详细解决处理过程
原文地址:安装Oracle11gR2先决条件检查失败的详细解决处理过程 作者:四海名汀 最近在32位Win7系统下安装Oracle11g发现一系列错误,现将详细的错误解决过程记录如下,以供大家参考. ...
- Oracle安装时物理内存检查失败的解决方案:
Oracle安装时物理内存检查失败的解决方案: 1.先决条件检查---未能满足某些最低安装要求,请求复查并修复下表中列出的问题,然后重新检查系统 环境说明: 安装环境:Windows10 64位,内存 ...
- debian查看bind版本_关于debian:如何在使用apt-get安装软件包之前检查版本
我正在考虑安装上个月在我的Debian PC上发布的hylafax +版本5.5.4. 我检查了dpkg -l | grep"hylafax",发现当前版本为5.5.3. 然后,我 ...
- oracle安装检查监视器,安装Oracle时检查监视器未通过问题的解决
1.安装Oracle数据库软件,提示"检查监视器"未通过 [root@db130 ~]# xhost + access control disabled, clients can ...
- 解决安装Oracle时检查监视器不通过的问题
1.安装数据库软件,提示"检查监视器"未通过 [root@db130 ~]# xhost + access control disabled, clients can connec ...
- Oracle安装时先决条件检查失败和[INS-35180] 无法检查可用内存问题解决
Oracle安装时先决条件检查失败和[INS-35180] 无法检查可用内存问题解决 问题: [INS-13001] 此操作系统不支持 Oracle 数据库 问题原因 解决方案 问题2:[INS-35 ...
最新文章
- 干货 | 使用FFT变换自动去除图像中严重的网纹
- jquery 移除border_jQuery - 删除元素
- “新浪朋友”首先要满足朋友需求
- 译:1. RabbitMQ Java Client 之 Hello World
- 2010-04-01 4over6tunnel配置——折腾了一天
- List、Map、Set 三个接口,存取元素时的特点
- Jetty的JNDI数据源
- python numpy 函数详解_numpy.linspace函数具体使用详解
- vant实现三级联动
- 产品经理必备 [Axure组件、PRD模板、竞品分析、数据分析等模板]
- kubernetes集群管理工具k9s
- matlab二极管怎么跟IGBT相连,Simulink的扩展模块库SimPowerSystems
- HEVC与AVC的区别与联系(十二)
- PAT甲级 1012 The Best Rank
- python 导入的nan怎么解决_如何处理python里的Nan和None
- matlab输入二项分布函数,MATLAB如何使用binornd函数生成二项分布随机数
- 自学基础1_linux_1_man命令详解
- 计算机语音输入软件,语音输入法_语音输入法电脑版_语音输入法哪个好【最新】-太平洋电脑网...
- 1-丁基-3-甲基咪唑双三氟甲基磺酰亚胺([BMIm] NTf2)离子液体修饰Ni镍纳米颗粒的介绍
- My Publications