假设您的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()进行安装,因为这可能会造成其他问题。
我想有可能…

最佳答案

更新后的PIP版本(>=10.0):

try:
    import zumba
except ImportError:
    from pip._internal import main as pip
    pip(['install', '--user', 'zumba'])
    import zumba

多亏了@joop,我才想出了正确的答案。
try:
    import zumba
except ImportError:
    import pip
    pip.main(['install', '--user', 'zumba'])
    import zumba

一个重要的备注是,这将在不需要根访问的情况下工作,因为它将在用户目录中安装模块。
不确定它是否适用于二进制模块或需要编译的模块,但它显然适用于纯Python模块。
现在,您可以编写自包含的脚本,而不必担心依赖性。

关于python - 如何从需要它的脚本中安装缺少的python包?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17271444/

10-13 07:17
查看更多