解决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之玩转字符串(2)
Sep 14 Python
在Python的循环体中使用else语句的方法
Mar 30 Python
Python中实现参数类型检查的简单方法
Apr 21 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
python线程定时器Timer实现原理解析
Nov 30 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
matplotlib jupyter notebook 图像可视化 plt show操作
Apr 24 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 Python
PyTorch device与cuda.device用法
Apr 03 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
BBS(php & mysql)完整版(五)
2006/10/09 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
javascript如何实现暂停功能
2015/11/06 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
python版本的读写锁操作方法
2016/04/25 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
家长给学校的建议书
2014/05/15 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
综合素质自我评价评语
2015/03/06 职场文书
政审证明范文
2015/06/19 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
只用Python就可以制作的简单词云
2021/06/07 Python
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python