【问题标题】:Python venv using system python?Python venv使用系统python?
【发布时间】:2021-09-13 21:31:36
【问题描述】:

为什么python -m venv py38还用系统python??

这严重烧伤了我,我有一个非常定制的 python 3.8 环境,我认为它与 venv 所宣传的系统隔离,我的系统 python 刚刚升级到 3.9,现在我必须重新构建所有东西。

任何有关创建实际隔离的 python 环境的建议都将不胜感激。

【问题讨论】:

  • 如果要使用为什么不保留3.8呢? 3.8和3.9都没有问题。
  • 虚拟环境就是这样工作的。它与系统的站点包隔离,但它重用解释器。要获得更高级别的隔离,请考虑使用 docker?
  • 不确定您所说的“如广告”是什么意思,文档说:运行此命令会创建...一个包含 Python 副本/符号链接的 bin(或 Windows 上的脚本)子目录二进制/二进制文件
  • 问题(如屏幕截图所示)是 venv 没有链接到 python 3.8,它链接到 python3,因此没有创建一个孤立的环境。当系统更新到 3.9(在我错过的更新中)时,它淹没了 venv。我后来改用 anaconda,因为它创建了孤立的环境。我会考虑删除这个问题,因为我认为它不适合 SO。

标签: python python-venv


【解决方案1】:

https://docs.python.org/3/library/venv.html

运行此命令会创建目标目录(创建任何尚不存在的父目录)并在其中放置一个 pyvenv.cfg 文件,其中的 home 键指向运行命令的 Python 安装(通用名称目标目录是 .venv)。它还会创建一个 bin(或 Windows 上的 Scripts)子目录,其中包含 Python 二进制文件/二进制文件的副本/符号链接(根据平台或环境创建时使用的参数而定)。

这让我觉得可能没有 python 安装的副本,而是指向它的链接。

反正pyenv.cfg应该有你python的路径,我建议改一下。

【讨论】:

  • 我接受这个作为答案,但是我看到 Venv 存在一个根本问题,copy/symlink 实际上是两个完全不同的操作,copy 会产生隔离,symlink 不会,并且默认情况下symlink 似乎是规范,并且基本上打破了使用 Venv 的点。感谢您对解释这种奇怪行为的文档的回复和说明。
猜你喜欢
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 2017-01-26
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
相关资源
最近更新 更多