我想为我的代码安装模块'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
自从我发布此答案以来,该模块已更新了很多。我已经使用正确的方式更新了该代码段,以安装缺少的依赖项,即使用subprocess
and pkg_resources
和not 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提到的一样,以上方法可以工作,尽管它不被视为打包项目的正确方法。要更深入地了解这一点,请阅读页面如何打包Python App。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句