env 的编码错误 运行 `activate`

Encoding error running `activate` of a venv

我用 python -m myvirtualenv 创建了一个虚拟环境。

现在我要激活它: $ cd \ENV\myvirtualenv\Scripts $ activate wrong parameter - 850 $(myvirtualenv) 奇怪的是,当我停用然后再次激活时,错误消息变为 "wrong parameter - 65001" 并且之后没有改变。

除了错误,一切似乎都正常。

这是 win7 python 3.7 上的问题,在默认 windows shell 和 Cmder 上都会出现。

这似乎是 python (https://bugs.python.org/issue34144) 中的错误。 甚至还有一个 pull request 等待审核 (https://github.com/python/cpython/pull/8321).

激活脚本首先应该执行以下操作:

  1. 读取当前代码页(例如 850)
  2. 将代码页更改为 65001
  3. 做实际工作
  4. 改回代码页

由于错误,当前代码页(例如 850)由于尾随 . 而被错误解析,并且无法在最后一步中重新设置。这意味着在第二个 运行 中它仍然是 65001。