我正在尝试激活 python 环境并在 bash 文件中使用 pip 安装一些包。它在环境中安装成功,但也在我的 mac 上全局安装,我不明白为什么。
脚本.sh:
#!/bin/bash
source '<absolute path>/venv/bin/activate'
which pip
pip install psutil
pip list
Run Code Online (Sandbox Code Playgroud)
输出:
$ ./script.sh
<absolute path>/venv/bin/pip
...
Package Version
---------------- ---------
pip 19.0.3
psutil 5.6.3
setuptools 41.0.1
wheel 0.33.1
Run Code Online (Sandbox Code Playgroud)
但是,在另一个没有虚拟环境的终端中,它也会被安装:
$ which pip
/usr/local/opt/python/libexec/bin/pip
$ pip list
Package Version
---------------- ---------
pip 19.0.3
psutil 5.6.3
setuptools 41.0.1
wheel 0.33.1
Run Code Online (Sandbox Code Playgroud)
如果我在终端中一一键入脚本中的命令,它会按预期工作。
我缺少什么?
编辑:
如果我运行pip freeze | xargs pip uninstall -y(在环境中或全局中),它将删除 virtualenv 和全局中的包。
如果我再次运行脚本并列出“site-packages”中的内容,ls venv/lib/python3.7/site-packages则安装的包不存在,所以我的“venv/bin/pip”以某种方式指向我的全局“site-packages”?
edit2:我找到了一种重现行为的方法。
1. 创建环境 …