修復python便攜版無法直接運行py文件的問題

修復python便攜版無法直接運行py文件的問題

關聯:windows下無前綴直接運行.py文件
關聯:便攜版python無法直接運行python腳本的問題

症狀:直接運行py腳本發現無法傳遞參數。
在python便攜版可正常使用的情況下,python sqlmap.py - u xxx 可正常使用
指定py文件使用python.exe打開時,直接運行 sqlmap.py - u xxx 發現無法傳遞參數。
在這裏插入圖片描述
在這裏插入圖片描述
原因:註冊表鍵值中缺少傳遞參數
指定便攜版python打開py腳本時,註冊表中打開方式鍵值中少了傳遞參數的功能
本需要 C:/python路徑/python.exe “%1” %* ,其中"%1" %* 起傳遞參數的作用。
但是註冊表中只加入了 “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
在這裏插入圖片描述

修復
第一步:先指定py文件的打開方式。
右擊py文件——>找到python.exe——>勾選始終使用此應用打開.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
在這裏插入圖片描述
擴展: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 。

其他參考文章:
Windows 製作免安裝的python環境
https://blog.csdn.net/lql971203/article/details/102930431
https://blog.csdn.net/lql971203/article/details/102931388

Windows 製作免安裝的JAVA環境
https://blog.csdn.net/lql971203/article/details/102486063

Windows免安裝java、python環境分享
https://blog.csdn.net/lql971203/article/details/102930143

免安裝java環境不能雙擊運行jar文件的優化解決辦法
https://blog.csdn.net/lql971203/article/details/102932453

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章