如何解决在python 3中可以嵌套Venv吗?我们可以访问所有 venv 上安装的所有软件包吗?
我首先激活了 conda 环境,然后我尝试激活了由 python3s 的原生 virtualenv 包创建的 venv,而没有停用 conda 环境。令我惊讶的是,两个 venv 都处于运行状态。但是venv使用的python是我最近激活的。有人能解释一下这里发生了什么吗?
~$ which python3
/usr/bin/python3
~$ conda activate py369
(py369) ~$ which python
/home/xxx/anaconda3/envs/py369/bin/python
(py369) ~$ source venv/bin/activate
(venv) (py369) ~$ which python
/home/xxx/venv/bin/python
(venv) (py369) ~$
如果这就像两个 venv 都被激活,那么我可以从 conda env 和 venv 访问两个包吗?
解决方法
这是正在发生的事情:
-
您激活 conda 环境。
conda
然后修改您的 PATH,使/home/xxx/anaconda3/envs/py369/bin
排在第一位。您可以使用echo $PATH
进行检查。它还会修改您的 shell 提示,使 (py369) 显示在前面 -
您激活您的 virtualenv 环境。由于 virtualenv 不知道
conda
的作用,它只是修改您的PATH
使得/home/xxx/venv/bin/
并将其自己的前缀放在您的 shell 提示前
现在,当您调用 python
时,它将从 virtualenv 文件夹中启动。当您导入包时,它们将从安装在您的 virtualenv 中的内容加载。所以你不能同时从 conda 和 virtualenv 环境导入。
您也没有提到为什么要进行这样的设置。我个人的意见是不要混用不同的环境程序,这样只会产生混淆。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。