pip 不支持 PIP_INDEX_URL 与 sudo

Joh*_*ang 5 python pip repository

根据文档,我可以指示 pip 使用我的私人 pypi 存储库而不是官方存储库:

For pip this can be done by setting the environment variable PIP_INDEX_URL in your .bashrc/.profile/.zshrc:
export PIP_INDEX_URL=http://localhost:8080/simple/
Run Code Online (Sandbox Code Playgroud)

所以我在我的 Debian 服务器上添加了我的私人存储库(例如, http://pypi.mycompany.com/simple/etc/profile。但是 pip 仍然会引发错误:

john@server:~$ sudo pip install ipython
Downloading ...
    Cannot fetch index base URL https://pypi.python.org/simple/
    ...
Run Code Online (Sandbox Code Playgroud)

看起来 pip 忽略了PIP_INDEX_URL我设置的环境变量。为什么?

更新:

按照@Ivo 的指示,我发现我的 Python 根本没有看到该变量:

john@server:~$ sudo python -c "import os; print(os.getenv('PIP_INDEX_URL'))"
None
Run Code Online (Sandbox Code Playgroud)

Joh*_*ang 6

找到了。很简单:sudo出于安全原因,默认情况下不会使用环境变量。要告诉sudo保留环境变量,-E可以使用选项,例如

sudo -E pip install ipython
Run Code Online (Sandbox Code Playgroud)