我需要在我的脚本中直接从PyPi安装一个包。也许有一些模块或distutils
(distribute
,pip
等)。允许我只执行pypi.install('requests')
之类的功能,请求将被安装到我的virtualenv中。
发布于 2018-05-09 21:47:16
官方推荐的从脚本安装包的方法是通过子进程调用pip的命令行界面。Most other answers presented here are not supported by pip。此外,从pip v10开始,所有代码都被精确地移到了pip._internal
上,以便让用户清楚地知道,不允许以编程方式使用pip。
使用sys.executable
确保您将调用与当前运行时关联的相同pip
。
import subprocess
import sys
def install(package):
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
发布于 2013-04-11 21:54:43
您还可以使用以下内容:
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')
发布于 2014-07-16 14:45:37
如果您想使用pip
安装所需的包并在安装后导入,您可以使用以下代码:
def install_and_import(package):
import importlib
try:
importlib.import_module(package)
except ImportError:
import pip
pip.main(['install', package])
finally:
globals()[package] = importlib.import_module(package)
install_and_import('transliterate')
如果您以用户身份安装包,则可能会遇到不能只导入包的问题。有关更多信息,请参见How to refresh sys.path?。
https://stackoverflow.com/questions/12332975
复制相似问题