检查模块是否存在,如不存在则安装它
我想检查一个模块是否存在,如果不存在的话,我想安装它。
我该怎么做呢?
到目前为止,我有这段代码,如果模块不存在,它会正确地打印出f
。
try:
import keyring
except ImportError:
print 'f'
11 个回答
14
注意: 这是针对Ipython / Jupyter的特定解决方案。
在使用笔记本或在线内核时,我通常会使用系统调用来完成。
try:
import keyring
except:
!pip install keyring
import keyring
另外,有人可能希望使用conda install
或mamba install
来代替。
52
import pip
def import_or_install(package):
try:
__import__(package)
except ImportError:
pip.main(['install', package])
这段代码的意思是,它试着导入一个包(也就是一组功能),这个包的类型是字符串。如果导入失败了,它就会调用pip(一个用来安装Python包的工具),然后尝试从那里安装这个包。
22
这是应该怎么做的,如果我说错了,请纠正我。不过,Noufal在这个问题的另一个回答中似乎也确认了这一点,所以我想这应该是对的。
在为我写的一些脚本编写setup.py
脚本时,我依赖于我的系统的包管理器来为我安装所需的库。
所以,在我的setup.py
文件中,我这样写了:
package = 'package_name'
try:
return __import__(package)
except ImportError:
return None
所以如果package_name
已经安装好了,那就没问题,继续进行。如果没有安装,就通过我用subprocess
调用的包管理器来安装它。