如何从需要它的脚本中安装缺少的python包?

假设您已经在python发行版上安装了pip或easy_install,我想知道如何从脚本本身在用户目录中安装所需的软件包。


据我所知pip也是一个python模块,因此解决方案应如下所示:


try:

    import zumba

except ImportError:

    import pip

    # ... do "pip install --user zumba" or throw exception   <-- how?

    import zumba

我所缺少的是从python内部执行“ pip install --user zumba”,我不想使用它,os.system()因为这可能会导致其他问题。


我认为有可能...


哔哔one
浏览 154回答 3
3回答

大话西游666

已更新为更新的点子版本(> = 10.0):try:&nbsp; &nbsp; import zumbaexcept ImportError:&nbsp; &nbsp; from pip._internal import main as pip&nbsp; &nbsp; pip(['install', '--user', 'zumba'])&nbsp; &nbsp; import zumba感谢@Joop,我得以提出正确的答案。try:&nbsp; &nbsp; import zumbaexcept ImportError:&nbsp; &nbsp; import pip&nbsp; &nbsp; pip.main(['install', '--user', 'zumba'])&nbsp; &nbsp; import zumba重要的一点是,这将不需要root访问权限,因为它将模块安装在用户目录中。不知道它是否适用于二进制模块或需要编译的模块,但显然适用于纯Python模块。现在,您可以编写自包含脚本,而不必担心依赖关系。

慕工程0101907

从pip版本> = 10.0.0开始,由于内部软件包的重组,上述解决方案将不起作用。现在,在脚本中使用pip的新方法如下:try: import abcexcept ImportError:&nbsp; &nbsp; from pip._internal import main as pip&nbsp; &nbsp; pip(['install', '--user', 'abc'])&nbsp; &nbsp; import abc

梵蒂冈之花

我想指出,当前接受的答案可能会导致应用名称冲突。从应用程序名称空间导入无法全面了解系统上已安装的内容。更好的方法是:import pippackages = [package.project_name for package in pip.get_installed_distributions()]if 'package' not in packages:&nbsp; &nbsp; pip.main(['install', 'package'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python