解决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中使用base64模块来处理base64编码的方法
Jul 01 Python
python使用super()出现错误解决办法
Aug 14 Python
tensorflow 获取变量&打印权值的实例讲解
Jun 14 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
pytorch中tensor的合并与截取方法
Jul 26 Python
Python socket实现多对多全双工通信的方法
Feb 13 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
Jun 21 Python
Python简单处理坐标排序问题示例
Jul 11 Python
python3.7将代码打包成exe程序并添加图标的方法
Oct 11 Python
python 回溯法模板详解
Feb 26 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
Django实现列表页商品数据返回教程
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
PHP和XSS跨站攻击的防范
2007/04/17 PHP
php集成动态口令认证
2016/07/21 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
Python中的localtime()方法使用详解
2015/05/22 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
Python selenium自动化测试模型图解
2020/04/15 Python
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
雷蛇美国官网:Razer
2020/04/03 全球购物
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
爱心捐款倡议书范文
2014/05/12 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
宇宙与人观后感
2015/06/05 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript