Python启动器未使用指定版本的Python运行脚本(Win 10)



为什么启动器不使用指定版本的Python运行脚本?

主机是一台安装了CPython 3.7的Windows 10计算机。正在运行包含以下内容的python脚本。。。

#! /usr/bin/env python3
import sys
print(sys.version)
print(sys.path)

产生以下结果。。。

2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)]
['C:\PROGRA~2\python27\lib\site-packages\pars-0.1.0-py2.7.egg', 'C:\Windows\SYSTEM32\python27.zip', 'C:\PROGRA~2\python27\DLLs', 'C:\PROGRA~2\python27\lib', 'C:\PROGRA~2\python27\lib\plat-win', 'C:\PROGRA~2\python27\lib\lib-tk', 'C:\PROGRA~2\python27', 'C:\PROGRA~2\python27\lib\site-packages']

Python 3.7正朝着我的方向发展。运行python --versionpy --version将返回Python 3.7.3。

这让我发疯了。

为了解决这个问题,我必须修复"的关联;。py";文件和py.exe,它在我的机器上坏了。

注意:用户";ETalbot";在线程中提供了答案我应该放#!(shebang(,它应该采取什么形式?。感谢他的回答(投票支持他的回答(。我在客户的笔记本电脑上。我没有权限进行他在HKEY_LOCAL_MACHINE(HKLM(下建议的注册表更改。我在HKEY_LOCAL_USER(HKLU(中创建了它,具有相同的效果。对于像我这样的人,我在这里增加了做出改变的步骤。

在Windows上使用Python包括第3.8.1.4节中的以下指导。来自文件关联:

启动程序在安装时应该与Python文件(即.py、.pyw、.pyc文件(关联。这意味着,当您从Windows资源管理器双击其中一个文件时,将使用启动器,因此您可以使用上面描述的相同功能,让脚本指定应该使用的版本。

将以下内容中的注册表项设置为"C:Windowspy.exe" "%1" %*:

HKEY_CURRENT_USERSOFTWAREClassesPython.Fileshellopencommand

如果您不确定如何在Windows上编辑注册表,请使用以下指南:

  1. 创建一个名为"python.reg">
  2. 把下面的东西放在文件里

注意:请参阅Eryk Sun对此帖子的评论,以获得有关图标和删除文件类标识符的指导。这里的一些值是特定于我的系统的。


Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSOFTWAREClassesPython.File]
@="Python File"
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileDefaultIcon]
@="C:\PROGRA~2\python27\DLLs\py.ico"
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileShell]
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileShellEdit with IDLE]
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileShellEdit with IDLEcommand]
@=""C:\PROGRA~2\python27\pythonw.exe" "C:\PROGRA~2\python27\Lib\idlelib\idle.pyw" -e "%1""
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileShelleditwithidle]
"MUIVerb"="&Edit with IDLE"
"Subcommands"=""
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileShelleditwithidleshell]
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileShelleditwithidleshelledit37]
"MUIVerb"="Edit with IDLE 3.7 (64-bit)"
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileShelleditwithidleshelledit37command]
@=""C:\Program Files\Python37\pythonw.exe" -m idlelib "%L" %*"
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileShellopen]
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileShellopencommand]
@=""C:\Windows\py.exe" "%1" %*"
[HKEY_CURRENT_USERSOFTWAREClassesPython.Fileshellex]
[HKEY_CURRENT_USERSOFTWAREClassesPython.FileshellexDropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

  1. 启动regedit
  2. 选择导入文件菜单
  3. 选择您创建的名为"的文件;python.reg">
  4. 在提示下单击"确定",这应该表示成功

如果你重新运行我之前文章中的用例,你会发现它现在可以工作了。

作为参考,首先咨询HKLU,然后咨询HKLM,因此HKLU中的内容将取代HKLM中的键。此外,作为用户,您通常可以访问HKLU,因为。。。你是用户:-(

用户";ErykSun";注意到(a(这个问题可以通过修复安装来解决,(b(对py.exe的路径/调用不适用于用户(而不是系统(范围的安装。虽然由于系统上的权限,(a(对我来说不是一个选项,但它可能是一个更安全的选择。而且,Python是全局安装在我的系统上的,如果你以不同的方式安装Python,你可能需要调整py.exe的路径。

最新更新