我需要设置.py文件的关联,使其与特定的Python版本一起执行。但我只需要在单个cmd.exe会话中进行此关联(并行会话不应受影响)。Windows允许这样做吗?
我怀疑答案是否定的,但在放弃将此功能纳入virtualenv之前,我想看到一些证据。
我需要设置.py文件的关联,使其与特定的Python版本一起执行。但我只需要在单个cmd.exe会话中进行此关联(并行会话不应受影响)。Windows允许这样做吗?
我怀疑答案是否定的,但在放弃将此功能纳入virtualenv之前,我想看到一些证据。
说到这一点,现在有一个专门解决这个问题的工具,我强烈推荐。它叫做pylauncher。从文档中可以看到:
PEP 397兼容的Windows下Python启动器。请参阅http://www.python.org/dev/peps/pep-0397/获取PEP, http://www.red-dove.com/screencasts/launcher/launcher.html获取屏幕录像
如果将其添加到PATHEXT环境变量中,甚至可以跳过.py扩展名。请参见问题What environment variables will be used when calling an EXE from command line?
reg add HKEY_CLASSES_ROOT\Python.File\shell\open\command /ve /t REG_EXPAND_SZ /d "\"%VIRTUAL_ENV%\Scripts\python.exe\" \"%1\" %*"
assoc
和ftype
命令从命令行更改文件关联(您可以从此处下载Windows命令参考 PDF文件)。assoc
命令查看当前与.py文件关联的文件类型:> assoc .py
.py=Python.File
有了这些信息,您可以使用ftype
命令检查当前与Python.File
文件类型相关联的程序:
> ftype Python.File
Python.File="C:\Python2.6\python.exe" "%1" %*
ftype
来更改关联的程序:> ftype Python.File="C:\Python2.7\python.exe" "%1" %*
Python.File="C:\Python2.7\python.exe" "%1" %*
cmd.exe
会话之前设置或恢复它到您想要的状态。我建议您使用一个或多个批处理文件来实现此目的。
cmd.exe
本身接受一个/k
参数,您可以使用它来在启动时执行一个批处理文件,以设置您最初想要的文件关联。然后,您还可以提供一个自定义的quit.bat
,在退出cmd
会话之前恢复关联。ftype Python.File="%PYTHON_HOME%\python.exe" "%1" %*
是否有效? - anatoly techtonikftype Python.File="%PYTHON_HOME%\python.exe" "%1" %*
。 - anatoly techtonik你最好的选择可能是在脚本中设置 PATH 变量,并通过编写 python script.py
来调用 python。文件关联是全局的,共享于进程之间。环境变量是处理本地的,这就是为什么我建议使用这个解决方案的原因。
script.py
而不将解释器放入PATH并作为python script.py
运行脚本吗? - anatoly techtonik您可以使用Windows的set命令来设置临时关联,该设置将持续到shell结束,除非将其附加到系统环境变量。
set
命令用于更改环境变量,而问题询问的是文件关联,这是完全不同的事情。 - David Heffernan