我需要直接在脚本中从PyPi安装软件包。也许有一些模块或distutils(distribute,pip等)功能使我可以执行类似的操作,pypi.install('requests')并且请求将被安装到我的virtualenv中。
distutils(distribute,pip等
pypi.install('requests')
从脚本安装软件包的官方推荐方法是通过子进程调用pip的命令行界面。pip不支持此处提出的大多数其他答案。此外,自pip v10起,所有代码都已pip._internal精确定位,以使用户清楚不允许以编程方式使用pip。
pip v10
pip._internal
使用sys.executable,以确保您将调用相同pip与当前运行相关联。
sys.executable
pip
import subprocess import sys def install(package): subprocess.check_call([sys.executable, "-m", "pip", "install", package])
您还可以使用类似:
import pip def install(package): if hasattr(pip, 'main'): pip.main(['install', package]) else: pip._internal.main(['install', package]) # Example if __name__ == '__main__': install('argh')