2 回答
TA贡献1934条经验 获得超2个赞
虚拟环境为您提供的独立版本:
你得到一个单独的
PATH
入口,让不合格的命令行引用python
,pip
等等,都会参考选择Python发布。如果您在系统上安装了许多 Python 副本(在开发人员工作站上很常见),这会很方便。这意味着像这样的 shebang 行将#!/usr/bin/env python
在 virtualenv 内部“做正确的事情”(至少在 Unix 或类 Unix 系统上)。您将获得一个单独的
site-packages
目录,因此 Python 包(pip
在此环境中使用 eg安装或在本地构建setup.py build
)被安装到 virtualenv 本地而不是系统范围的位置。这在核心 Python 解释器安装在不允许非特权用户写入文件的地方的系统上特别有用,因为它允许每个用户拥有自己的私有 virtualenvs 并安装了第三方软件包,而无需使用sudo
或等效在系统范围内安装这些第三方软件包。
......就是这样。
虚拟环境不会将您与:
您的操作系统(Linux、Windows)或机器架构(x86)。
直接引用特定 Python 解释器的脚本(例如
#!/usr/bin/python
)。系统上的非 Python 内容
PATH
(例如,通过操作系统的包管理器安装的第三方程序或实用程序)。安装到操作系统特定位置(例如
/usr/lib
、/usr/include
、/usr/local/lib
、/usr/local/include
)的非 Python 库或头文件。使用操作系统的包管理器(例如
apt
)而不是 Python 包管理器(pip
)安装的 Python 包可能无法从 virtualenv 的site-packages
文件夹中看到,但此类包的“本机”部分(在 eg 中/usr/lib
)将(可能)仍然可见。
TA贡献1951条经验 获得超3个赞
虚拟环境对apt
操作没有影响。
从源代码构建时,任何编译的二进制文件都将链接到该环境的 python 二进制文件。因此,如果您的 virtualenv python 版本与系统版本不同,并且您使用系统 python(通常是路径问题),则可能会遇到运行时链接错误。
至于隔离,这个相同的属性(二进制兼容性)将您与可能会更改您的系统 python 二进制文件的系统升级隔离开来。通常我们在 2.x 和 3.x 中是稳定的,所以不太可能发生。但是有,而且可以。
当然,当在 virtualenv 中从源代码构建时,已安装的包会存放在该 virtualenv 中;没有其他 python 二进制文件可以访问这些包,除非您以奇怪的方式操作路径或 PYTHONPATH。
添加回答
举报