旧版python卸载后py和pyc文件关联修复笔记

本文解决了一个关于Python脚本参数无法正确传递的问题,在Win7系统中由于.py文件关联错误导致argparse模块无法正常工作,并提供了三种有效的修复方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题起源

Win7系统,电脑上之前是python 2.7python 3.6版本共存的,后面把2.7的版本卸载了,发现pypyc的文件关联没了。

尝试在程序卸载面板中用安装程序进行修复,Python Launcher修复也试了,都没修复成功。

于是对py和pyc文件进行手动关联(右键菜单->打开方式),当时想都没想,就关联到用python.exe打开,中间使用一直没有发现有什么问题。

直到最近在使用argparse模块时,发现直接脚本执行(test.py --logdir=E:/logs这样执行)时,参数死活传不进去,但是python test.py --logdir=E:/logs这样又可以。

测试代码

测试代码如下:

# test.py
import argparse

parser = argparse.ArgumentParser()
parser.add_argument(
    '--logdir',
    type=str,
    default='D:/logs',
    required=False,
    help='log directory'
)

args = parser.parse_known_args()
print(args)

test.py –logdir=E:/logs执行结果:

(Namespace(logdir='D:/logs'), [])

python test.py –logdir=E:/logs执行结果:

(Namespace(logdir='E:/logs'), [])

很明显直接脚本执行的结果是错的,想想真的是很奇怪,于是各种找原因,最后发现是打开方式关联到python.exe引起的,下面是总结的几种修复方法,有遇到类似问题的可以试试。

修复方法

方法一

在py和pyc文件上,右键菜单->打开方式->选择默认程序->选择C:\Windows\py.exe(这个好像是3以上版本才有),正常情况下文件关联会修复成功。

方法二

程序卸载面板(控制面板->程序和功能),使用python安装程序或Python Launcher进行修复,如果运气好,也能修复成功。

方法三

如果以上两种方法都不行,只能注册表修复了,将下面的文本,复制到记事本,保存为fix.reg扩展名,双击导入注册表。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.py]
@="Python.File"
"Content Type"="text/plain"

[HKEY_CLASSES_ROOT\.pyc]
@="Python.CompiledFile"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithList]
"a"="python.exe"
"MRUList"="a"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids]
"Python.File"=hex(0):

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pyc]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pyc\OpenWithList]
"a"="python.exe"
"MRUList"="a"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pyc\OpenWithProgids]
"Python.CompiledFile"=hex(0):
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值