小编ost*_*opp的帖子

当从 bash 脚本调用时,pip 在 vi​​rtualenv 和全局中安装包

我正在尝试激活 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. 创建环境 …

python bash pip

3
推荐指数
1
解决办法
5131
查看次数

标签 统计

bash ×1

pip ×1

python ×1