可点击 Python CLI 实例化
Clickable Python CLI Instantiation
我正在尝试让我的 .py
脚本可以点击!
我有什么
我使用 Python 创建的 CLI 程序有效。我打开命令提示符并输入 python my_script.py
,一切都按预期进行。我想让它可以点击,这样用户就不必 运行 任何命令!
我试过的
我在 vim 中创建了一个 .bat
文件,运行 是 python my_script.py
命令。当我单击它时,没有实现所需的行为。命令提示符打开大约一毫秒然后关闭。
我的问题
如何创建更好的 .bat
文件,以便我的 CLI 程序只需单击一个按钮即可运行?
Python,无论好坏,不允许您指定脚本的路径,也不会搜索脚本的路径。
官方的说法是,我不想这么说,你必须将你想要的 Python.exe
可执行文件关联到 运行 python 脚本,扩展名为 .py
然后你可以双击 script.py
或在 CMD 提示符中输入 \path\to\script.py
,它将 运行 脚本。
从不想通过单击意外执行脚本的角度来看,从想要安装多个版本的 python 并选择执行哪个版本的角度来看,我讨厌这个。
有一个(恕我直言)恼人的(Kludgy)解决方法。
您可以为 Python 的每个实例创建一个文件类型,然后将其与 .py
相关联
因此您可以创建所需的 FType,并在从批处理文件启动脚本时将它们关联到脚本中:
FTYPE Py23=C:\Path\To\Pthon-23\python.exe %*
FTYPE Py38=C:\Path\To\Pthon-38\python.exe %*
那么你的脚本可以这样做:
@Echo off
ASSOC .py=Py38
"C:\Path\To\Script.py"
ASSOC .py=
Python支持在可以忽略脚本第一行-x
的模式下调用。这与包装批处理文件相结合意味着您实际上可以将整个 Python 脚本放入批处理文件中。
这个小脚本展示了如何做到这一点。这是一个独立的
@echo off
rem = """ # This is run in the batch file to launch Python
python -x "%~f0" %*
goto endofPython
rem = """
# Your python code goes here ..
def main():
print("Hello from Python")
if __name__ == "__main__":
main()
rem = """ # This section is run after Python is done, here just
# just run pause to keep the console window open
:endofPython
pause
rem = """
我正在尝试让我的 .py
脚本可以点击!
我有什么
我使用 Python 创建的 CLI 程序有效。我打开命令提示符并输入 python my_script.py
,一切都按预期进行。我想让它可以点击,这样用户就不必 运行 任何命令!
我试过的
我在 vim 中创建了一个 .bat
文件,运行 是 python my_script.py
命令。当我单击它时,没有实现所需的行为。命令提示符打开大约一毫秒然后关闭。
我的问题
如何创建更好的 .bat
文件,以便我的 CLI 程序只需单击一个按钮即可运行?
Python,无论好坏,不允许您指定脚本的路径,也不会搜索脚本的路径。
官方的说法是,我不想这么说,你必须将你想要的 Python.exe
可执行文件关联到 运行 python 脚本,扩展名为 .py
然后你可以双击 script.py
或在 CMD 提示符中输入 \path\to\script.py
,它将 运行 脚本。
从不想通过单击意外执行脚本的角度来看,从想要安装多个版本的 python 并选择执行哪个版本的角度来看,我讨厌这个。
有一个(恕我直言)恼人的(Kludgy)解决方法。
您可以为 Python 的每个实例创建一个文件类型,然后将其与 .py
因此您可以创建所需的 FType,并在从批处理文件启动脚本时将它们关联到脚本中:
FTYPE Py23=C:\Path\To\Pthon-23\python.exe %*
FTYPE Py38=C:\Path\To\Pthon-38\python.exe %*
那么你的脚本可以这样做:
@Echo off
ASSOC .py=Py38
"C:\Path\To\Script.py"
ASSOC .py=
Python支持在可以忽略脚本第一行-x
的模式下调用。这与包装批处理文件相结合意味着您实际上可以将整个 Python 脚本放入批处理文件中。
这个小脚本展示了如何做到这一点。这是一个独立的
@echo off
rem = """ # This is run in the batch file to launch Python
python -x "%~f0" %*
goto endofPython
rem = """
# Your python code goes here ..
def main():
print("Hello from Python")
if __name__ == "__main__":
main()
rem = """ # This section is run after Python is done, here just
# just run pause to keep the console window open
:endofPython
pause
rem = """