python - 如何检查模块是否已安装在 Python 中,如果没有,则在代码中安装它?

标签 python python-3.x module python-module

我想为我的代码安装模块“mutagen”和“gTTS”,但我想要它以便它会在每台没有这些模块的计算机上安装它们,但它不会尝试如果已经安装,请安装它们。我目前有:

def install(package):
    pip.main(['install', package])

install('mutagen')

install('gTTS')

from gtts import gTTS
from mutagen.mp3 import MP3

但是,如果您已经有了这些模块,这只会在您打开程序时给程序的开头添加不必要的困惑。

最佳答案

编辑 - 2020/02/03

自从我发布此答案以来,pip 模块已经更新了很多。我已经用安装缺失依赖项的正确方法更新了代码片段,即使用 subprocesspkg_resources,而不是 pip

要隐藏输出,您可以将子进程输出重定向到 devnull:

import sys
import subprocess
import pkg_resources

required = {'mutagen', 'gTTS'}
installed = {pkg.key for pkg in pkg_resources.working_set}
missing = required - installed

if missing:
    python = sys.executable
    subprocess.check_call([python, '-m', 'pip', 'install', *missing], stdout=subprocess.DEVNULL)

就像@zwer 提到的那样,上面的方法有效,尽管它不被视为打包项目的正确方法。要更深入地了解这一点,请阅读页面 How to package a Python App .

关于python - 如何检查模块是否已安装在 Python 中,如果没有,则在代码中安装它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44210656/

相关文章:

javascript - 如何将此文件导入到 VueJS 中?

apache - 无法在 Ubuntu 上禁用 Apache 2.2 上的模块

TypeScript:命名空间与类

python - Django表单小部件不显示错误

python - 如何修改自相关默认绘图样式并将 acorr 函数的输出写入 dat/txt 文件?

sql - 连续对某行进行pandas列操作

python-3.x - 将带有标签的 pandas DF 写入 influxdb

python - 恢复系数

python - Excel - 查找前一行和各种范围大小的最大值

python - Pandas 分组并计算百分比,同时保留 NaN