假设您已经在python发行版上安装了pip或easy_install,我想知道如何在脚本本身内的用户目录中安装所需的包.
据我所知,pip也是一个python模块,所以解决方案看起来像:
try:
import zumba
except ImportError:
import pip
# ... do "pip install --user zumba" or throw exception <-- how?
import zumba
Run Code Online (Sandbox Code Playgroud)
我缺少的是从python内部执行"pip install --user zumba",我不想使用它,os.system()因为这可能会产生其他问题.
我认为有可能......
sor*_*rin 17
感谢@Joop,我能够提出正确的答案.
try:
import zumba
except ImportError:
from pip._internal import main as pip
pip(['install', '--user', 'zumba'])
import zumba
Run Code Online (Sandbox Code Playgroud)
一个重要的注意事项是,这将在不需要root访问权限的情况下工作,因为它将在用户目录中安装模块.
不确定它是否适用于二进制模块或需要编译的模块,但它显然适用于纯python模块.
现在,您可以编写自包含脚本,而不必担心依赖项.
从pip版本> = 10.0.0开始,由于内部包重构,上述解决方案将无效.在脚本中使用pip的新方法现在如下:
try: import abc
except ImportError:
from pip._internal import main as pip
pip(['install', '--user', 'abc'])
import abc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18222 次 |
| 最近记录: |