【问题标题】:Cannot get an isolated environment when using Bash script to create a Python virtualenv [duplicate]使用 Bash 脚本创建 Python virtualenv 时无法获得隔离环境 [重复]
【发布时间】:2019-04-23 08:29:15
【问题描述】:

当我使用 bash 脚本创建 Python 虚拟环境时,所有环境(解释器、pip 和其他包)都是系统范围的包。

#!/bin/bash
virtualenv <venv name> --python python3

我通过以下命令检查它:

which python3
which pip3

和

pip3 list

但是,如果我手动键入命令,它会起作用。我有一个孤立的环境。

谁能告诉我为什么会发生这种情况以及如何使用脚本来创建 Python 虚拟环境? (因为我想通过脚本使其自动化)。 非常感谢。

注意: 我没有试图以错误的方式激活环境。我确实使用source 来激活它并在我的命令行头部获得标记。我在问为什么在 bash 脚本中创建虚拟环境不会复制解释器和 pip 的二进制文件!那将错过使用虚拟环境的重点! 据我了解,无论我在哪个 bash 会话(当前会话或子进程)中执行创建命令,结果都应该是相同的。这就是问题所在。

【问题讨论】:

  • 您好,这个问题是要激活虚拟环境的。但是,我的问题是创建一个虚拟环境。而且据我了解,无论我在哪个 bash 会话中创建虚拟环境,都应该是一样的。我想知道为什么不是。我确实使用'source'激活环境,激活后发现python解释器没有被隔离,但是标记仍然在命令行前面。

标签: python bash virtualenv


【解决方案1】:

【讨论】:

  • 嗨,所有这些都说明了为什么在 bash 脚本中激活环境不起作用。但是,我认为无论在哪个环境下,创建过程都应该是一样的。那就是问题所在。我确实使用'source'激活环境,激活后发现python解释器没有被隔离,但是标记仍然在命令行前面。
  • 嗯...好吧,现在问题更清楚了!所以,如果我理解的话,你正在创建你的虚拟环境(virtualenv -p python3 ),然后你正在以正确的方式激活它(source /bin/activate),但它会导致一个非隔离的 Python 环境(应该如此),对吧?检查您的shell中是否设置了环境变量“PYTHONPATH”,如果是,请在激活虚拟环境之前取消设置。
  • 我不确定您的建议是否有效。组服务器更新后,问题无法重现。我不知道为什么。
猜你喜欢
  • 1970-01-01
  • 2018-12-26
  • 2018-08-15
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 2017-03-09
  • 2019-05-08
  • 2020-08-10
相关资源
最近更新 更多