微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python 3中可以嵌套Venv吗?我们可以访问所有 venv 上安装的所有软件包吗?

如何解决在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 访问两个包吗?

解决方法

这是正在发生的事情:

  1. 您激活 conda 环境。 conda 然后修改您的 PATH,使 /home/xxx/anaconda3/envs/py369/bin 排在第一位。您可以使用 echo $PATH 进行检查。它还会修改您的 shell 提示,使 (py369) 显示在前面

  2. 您激活您的 virtualenv 环境。由于 virtualenv 不知道 conda 的作用,它只是修改您的 PATH 使得 /home/xxx/venv/bin/ 并将其自己的前缀放在您的 shell 提示前

现在,当您调用 python 时,它将从 virtualenv 文件夹中启动。当您导入包时,它们将从安装在您的 virtualenv 中的内容加载。所以你不能同时从 conda 和 virtualenv 环境导入。

您也没有提到为什么要进行这样的设置。我个人的意见是不要混用不同的环境程序,这样只会产生混淆。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。