假设您的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/