解決python便攜版無法直接運行py文件的問題
關(guān)聯(lián):windows下無前綴直接運行.py文件
關(guān)聯(lián):便攜版python無法直接運行python腳本的問題
癥狀:直接運行py腳本發(fā)現(xiàn)無法傳遞參數(shù)。
在python便攜版可正常使用的情況下,python sqlmap.py - u xxx 可正常使用
指定py文件使用python.exe打開時,直接運行 sqlmap.py - u xxx 發(fā)現(xiàn)無法傳遞參數(shù)。
原因:注冊表鍵值中缺少傳遞參數(shù)
指定便攜版python打開py腳本時,注冊表中打開方式鍵值中少了傳遞參數(shù)的功能
本需要 C:/python路徑/python.exe “%1” %* ,其中"%1" %* 起傳遞參數(shù)的作用。
但是注冊表中只加入了 “C:/python路徑\python.exe” “%1” ,因此,無法直接運行py腳本
示例:能夠正常使用的注冊表
HKEY_CLASSES_ROOT.py
HKEY_CLASSES_ROOT.py_auto_file\shell\open\command
HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command
修復(fù)
第一步:先指定py文件的打開方式。
右擊py文件——>找到python.exe——>勾選始終使用此應(yīng)用打開.py文件。
修復(fù)注冊表
新建python.reg 內(nèi)容如下:【注意:其中C:\Program_Base\Python37\python.exe是我的python路徑,注冊表文件中需要斜杠\轉(zhuǎn)義特殊字符】
-----------------我是分割線----------------------
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” %*"
-----------------我是分割線----------------------
修復(fù)結(jié)果:OK
擴(kuò)展:python2-3腳本共存問題
問題:
這里有一個py腳本的調(diào)用問題,因為目前python2還有一點需求,選擇打開方式是選python2還是選python3?默認(rèn)同時肯定只有一個生效的
例如:
如果選的默認(rèn)打開方式是python3的exe, 那么【sqlmap.py – u xxx】 肯定是調(diào)用python3執(zhí)行py腳本
解決思路:
把python2的腳本改成.py2 ,然后按上述操作改改注冊表
詳細(xì)步驟:
1、先指定.py2文件的打開方式。2、導(dǎo)入注冊表文件python2.reg
新建python2.reg 內(nèi)容如下:
【注意:其中C:\Program_Base\Python27\python.exe是我的python2路徑,注冊表文件中需要斜杠\轉(zhuǎn)義特殊字符】
-----------------我是分割線----------------------
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” %*"
-----------------我是分割線----------------------
#缺少的部分屬于重復(fù)部分可以忽略,
實際刪除[HKEY_CLASSES_ROOT\Applications\python2.exe]鍵值對,也能夠正常運行python sqlmap.py -h 和sqlmap.py -h 。
補(bǔ)充知識:Python學(xué)習(xí)之安裝目錄下的python.exe與pythonw.exe文件的區(qū)別
python.exe在運行程序的時候,會彈出一個黑色的控制臺窗口(也叫命令行窗口、DOS/CMD窗口);
pythonw.exe是無窗口的Python可執(zhí)行程序,意思是在運行程序的時候,沒有窗口彈出,代碼在后臺執(zhí)行。
.py和**.pyw**文件的區(qū)別也來源于python.exe和pythonw.exe的區(qū)別:
安裝 Windows 版 Python 時,擴(kuò)展名為 .py 的文件被默認(rèn)為用 python.exe 運行的文件,而 .pyw 文件則被默認(rèn)為用 pythonw.exe 運行。
.pyw 格式是被設(shè)計用來運行開發(fā)的純圖形界面程序的,純圖形界面程序的用戶不需要看到控制臺窗口。在開發(fā)純圖形界面程序的時候,可以暫時把 .pyw 改成 .py ,運行時能調(diào)出控制臺窗口,方便看到所有錯誤信息。
至于.pyc文件,是Python解釋器運行程序的過程中產(chǎn)生的字節(jié)碼文件(也就是中間生成的文件)。
這里還要解釋一個問題,如果.py文件直接用python.exe打開,文件被執(zhí)行完成之后,視窗會立即關(guān)閉,如果想讓視窗停留,給大家提供兩個方法:
①可以在程序中import time模塊,加入超長睡眠語句,如time.sleep(1800),如果你不手動關(guān)閉視窗,視窗將會停留30min;
②可以調(diào)用sys和os模塊,使用命令行語句pause(個人覺得有些牛刀殺雞的感覺)。
以上這篇解決python便攜版無法直接運行py文件的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
pyinstaller打包單個exe后無法執(zhí)行錯誤的解決方法
今天小編就為大家分享一篇pyinstaller打包單個exe后無法執(zhí)行錯誤的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06關(guān)于sklearn中模塊包導(dǎo)入報錯的通用解決方法
這篇文章主要介紹了關(guān)于sklearn中模塊包導(dǎo)入報錯的通用解決方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06python中Tkinter實現(xiàn)分頁標(biāo)簽的示例代碼
這篇文章主要介紹了python中Tkinter實現(xiàn)分頁標(biāo)簽的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Python安裝Numpy和matplotlib的方法(推薦)
下面小編就為大家?guī)硪黄狿ython安裝Numpy和matplotlib的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11Django如何實現(xiàn)RBAC權(quán)限管理
這篇文章主要介紹了Django如何實現(xiàn)RBAC權(quán)限管理問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12python使用py2neo查詢Neo4j的節(jié)點、關(guān)系及路徑
本文介紹了使用Py2neo的NodeMatcher和RelationshipMatcher查詢圖中的節(jié)點和關(guān)系,以及通過執(zhí)行Cypher語句的查詢方式。感興趣的小伙伴請看下文2021-08-08