我不确定这些因素中有多少重要,但我尝试运行我很久以前编写的bash脚本,该脚本创建并激活了一个virtualenv。我将其更改为使用python3作为python版本。然而,这似乎破坏了virtualenv并试图通过pip将其安装到全局站点包中。
如何从python3 virtualenv获取pip以安装到virtualenv中?
PYTHON=${PYTHON:-python3}
VENV_DIR="bld_tests_env"
$PYTHON -m virtualenv --python=$PYTHON $VENV_DIR
set -x
source $VENV_DIR/bin/activate
which -a python
which -a pip
ls -l `which pip`
pip --version给出了以下输出
+ which -a python
<code path>/staging/bld_tests_env/bin/python
/usr/local/bin/python
/usr/bin/python
+ which -a pip
<code path>/staging/bld_tests_env/bin/pip
/usr/local/bin/pip
+ ls -l `which pip`
<code path>/staging/bld_tests_env/bin/pip
+ pip --version
pip 20.1 from /usr/local/lib/python3.5/site-packages/pip (python 3.5)谁能给我解释一下为什么在激活virtualenv之后调用pip仍然会引用全局安装?
发布于 2020-05-16 07:33:21
我没有解释为什么它与virtualenv如此分离,但我确实了解到venv是自Python3.3 https://docs.python.org/3/library/venv.html以来的一个内置模块
如果我从
$PYTHON -m virtualenv --python=$PYTHON $VENV_DIR至
$PYTHON -m venv $VENV_DIR然后,一切似乎都像预期的那样工作。
我的猜测是,python3没有正确支持virtualenv,也没有人注意到这一点,因为没有人愿意为此使用pip包。
https://stackoverflow.com/questions/61828528
复制相似问题