解决python便携版无法直接运行py文件的问题


Posted in Python onSeptember 01, 2020

关联:windows下无前缀直接运行.py文件

关联:便携版python无法直接运行python脚本的问题

症状:直接运行py脚本发现无法传递参数。

在python便携版可正常使用的情况下,python sqlmap.py - u xxx 可正常使用

指定py文件使用python.exe打开时,直接运行 sqlmap.py - u xxx 发现无法传递参数。

解决python便携版无法直接运行py文件的问题

原因:注册表键值中缺少传递参数

指定便携版python打开py脚本时,注册表中打开方式键值中少了传递参数的功能

本需要 C:/python路径/python.exe “%1” %* ,其中"%1" %* 起传递参数的作用。

但是注册表中只加入了 “C:/python路径\python.exe” “%1” ,因此,无法直接运行py脚本

示例:能够正常使用的注册表

HKEY_CLASSES_ROOT.py

解决python便携版无法直接运行py文件的问题

HKEY_CLASSES_ROOT.py_auto_file\shell\open\command

解决python便携版无法直接运行py文件的问题

HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command

解决python便携版无法直接运行py文件的问题

修复

第一步:先指定py文件的打开方式。

右击py文件——>找到python.exe——>勾选始终使用此应用打开.py文件。

解决python便携版无法直接运行py文件的问题

修复注册表

新建python.reg 内容如下:【注意:其中C:\Program_Base\Python37\python.exe是我的python路径,注册表文件中需要斜杠\转义特殊字符】

-----------------我是分割线----------------------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT.py]
@=".py_auto_file"

[HKEY_CLASSES_ROOT.py_auto_file]
[HKEY_CLASSES_ROOT.py_auto_file\shell]
[HKEY_CLASSES_ROOT.py_auto_file\shell\open]
[HKEY_CLASSES_ROOT.py_auto_file\shell\open\command]
@="“C:\Program_Base\Python37\python.exe” “%1” %*"

[HKEY_CLASSES_ROOT\Applications\python.exe]
[HKEY_CLASSES_ROOT\Applications\python.exe\shell]
[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open]
[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]
@="“C:\Program_Base\Python37\python.exe” “%1” %*"
-----------------我是分割线----------------------

修复结果:OK

解决python便携版无法直接运行py文件的问题

扩展:python2-3脚本共存问题

问题:

这里有一个py脚本的调用问题,因为目前python2还有一点需求,选择打开方式是选python2还是选python3?默认同时肯定只有一个生效的

例如:

如果选的默认打开方式是python3的exe, 那么【sqlmap.py ? u xxx】 肯定是调用python3执行py脚本

解决思路:

把python2的脚本改成.py2 ,然后按上述操作改改注册表

详细步骤:

1、先指定.py2文件的打开方式。2、导入注册表文件python2.reg

新建python2.reg 内容如下:

【注意:其中C:\Program_Base\Python27\python.exe是我的python2路径,注册表文件中需要斜杠\转义特殊字符】

-----------------我是分割线----------------------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT.py2]
@=".py2_auto_file"

[HKEY_CLASSES_ROOT.py2_auto_file]
[HKEY_CLASSES_ROOT.py2_auto_file\shell]
[HKEY_CLASSES_ROOT.py2_auto_file\shell\open]
[HKEY_CLASSES_ROOT.py2_auto_file\shell\open\command]
@="“C:\Program_Base\Python27\python.exe” “%1” %*"
-----------------我是分割线----------------------

#缺少的部分属于重复部分可以忽略,

实际删除[HKEY_CLASSES_ROOT\Applications\python2.exe]键值对,也能够正常运行python sqlmap.py -h 和sqlmap.py -h 。

补充知识:Python学习之安装目录下的python.exe与pythonw.exe文件的区别

python.exe在运行程序的时候,会弹出一个黑色的控制台窗口(也叫命令行窗口、DOS/CMD窗口);

pythonw.exe是无窗口的Python可执行程序,意思是在运行程序的时候,没有窗口弹出,代码在后台执行。

.py和**.pyw**文件的区别也来源于python.exe和pythonw.exe的区别:

安装 Windows 版 Python 时,扩展名为 .py 的文件被默认为用 python.exe 运行的文件,而 .pyw 文件则被默认为用 pythonw.exe 运行。

.pyw 格式是被设计用来运行开发的纯图形界面程序的,纯图形界面程序的用户不需要看到控制台窗口。在开发纯图形界面程序的时候,可以暂时把 .pyw 改成 .py ,运行时能调出控制台窗口,方便看到所有错误信息。

至于.pyc文件,是Python解释器运行程序的过程中产生的字节码文件(也就是中间生成的文件)。

这里还要解释一个问题,如果.py文件直接用python.exe打开,文件被执行完成之后,视窗会立即关闭,如果想让视窗停留,给大家提供两个方法:

①可以在程序中import time模块,加入超长睡眠语句,如time.sleep(1800),如果你不手动关闭视窗,视窗将会停留30min;

②可以调用sys和os模块,使用命令行语句pause(个人觉得有些牛刀杀鸡的感觉)。

以上这篇解决python便携版无法直接运行py文件的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python map和reduce函数用法示例
Feb 26 Python
简单介绍Python中的len()函数的使用
Apr 07 Python
python常见数制转换实例分析
May 09 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
Python 登录网站详解及实例
Apr 11 Python
python调用API实现智能回复机器人
Apr 10 Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 Python
python简单实现AES加密和解密
Mar 28 Python
使用Pandas将inf, nan转化成特定的值
Dec 19 Python
python递归函数用法详解
Oct 26 Python
AI:如何训练机器学习的模型
Apr 16 Python
Python使用永中文档转换服务
May 06 Python
django有哪些好处和优点
Sep 01 #Python
python实现简单的五子棋游戏
Sep 01 #Python
Pycharm连接gitlab实现过程图解
Sep 01 #Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 #Python
python selenium xpath定位操作
Sep 01 #Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 #Python
Python3实现英文字母转换哥特式字体实例代码
Sep 01 #Python
You might like
基于mysql的bbs设计(二)
2006/10/09 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
destoon常用的安全设置概述
2014/06/21 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
Python下使用Psyco模块优化运行速度
2015/04/05 Python
在Django的session中使用User对象的方法
2015/07/23 Python
python executemany的使用及注意事项
2017/03/13 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
酒店服务实习自我鉴定
2013/09/22 职场文书
生产部统计员岗位职责
2014/01/05 职场文书
秋季运动会广播稿
2014/02/22 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
2014年生产部工作总结
2014/12/17 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书