为什么Windows上的virtualenv不会将.py/.pyw/.pyo/.pyc文件与virtualenv的Python可执行文件版本相关联?

Pio*_*ost 7 python windows shebang virtualenv file-association

virtualenv不将.py(w)文件与virtualenv的Python可执行文件版本相关联的原因是什么?考虑到Windows上没有像shebang这样的机制,这对于Windows上的virtualenv来说似乎是一个理想的任务.

Vel*_*ors 4

文件类型关联在 Windows 注册表中处理。virtualenv activate 脚本必须修改注册表项,deactivate 脚本需要恢复以前的值(否则有破坏关联的风险)。

如果激活一个 virtualenv,打开 cmd.exe 的第二个实例,然后激活另一个 virtualenv,会发生什么情况?除非您以正确的顺序停用它们,否则存储的注册表项值将会丢失。

我不是 virtualenv 开发人员,我想说潜在的问题远远超过了微小的好处。

  • @Velociraptors在我对[单个cmd.exe会话的临时文件关联](http://stackoverflow.com/questions/5583024/)问题的回答中,我展示了如何在命令行会话期间定义文件类型关联。Virtualenv 可以使用它来实现我所要求的。 (3认同)
  • * virtualenv 激活脚本必须修改注册表项* 实际上不是。正如 virtualenvwrapper-win 所示,解决方案是将 Python 文件与批处理文件关联起来,该批处理文件选择要运行的 Python。 (2认同)