解决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 相关文章推荐
Windows安装Python、pip、easy_install的方法
Mar 05 Python
Python变量和字符串详解
Apr 29 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
Django中ORM外键和表的关系详解
May 20 Python
Django REST framework 单元测试实例解析
Nov 07 Python
Python编程快速上手——正则表达式查找功能案例分析
Feb 28 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
Pygame框架实现飞机大战
Aug 07 Python
pycharm配置QtDesigner的超详细方法
Jan 25 Python
python游戏开发Pygame框架
Apr 22 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_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
用PHP实现读取和编写XML DOM代码
2010/04/07 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
jquery中动态效果小结
2010/12/16 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
python正则匹配抓取豆瓣电影链接和评论代码分享
2013/12/27 Python
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
python生成n个元素的全组合方法
2018/11/13 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
Python中return函数返回值实例用法
2020/11/19 Python
阿巴庭院:Abba Patio
2019/06/18 全球购物
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
laravel使用redis队列实例讲解
2021/03/23 PHP
同事打架检讨书
2015/05/06 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js