关于在 Windows 终端执行 Python 文件

2022-10-18 18:48:01 +08:00
 Lighthughjiajin

平时会写一些小脚本,在 Mac/Linux 上的时候,会创建一个专门存放脚本的路径,然后加入到 PATH 中,打开终端就可以执行。 就好像这样写一个

#! /usr/bin/env python

print('Hello~')

保存到 greet 文件中,并把这个文件放入到 PATH 下的路径,那就可以在任意路径下通过 greet 执行。

在 Windows 中,Python 脚本的 #! 要如何指定,文件名后缀要改为什么才可以实现类似的效果?

求大佬解答。

2210 次点击
所在节点    程序员
15 条回复
89712
2022-10-18 18:49:48 +08:00
msys2 了解下
Envov
2022-10-18 19:02:42 +08:00
bat
ysc3839
2022-10-18 19:09:55 +08:00
如果 shell 是 cmd ,那直接执行.py 文件会使用.py 关联的程序打开,不需要加 shebang 。
如果使用的是 MSYS2 或 Cygwin 的 bash ,那按照你说的加上 shebang 即可。
Lighthughjiajin
2022-10-18 19:12:02 +08:00
@ysc3839 请问如何关联 py 文件为 python 解释器
fzls
2022-10-18 19:12:16 +08:00
使用 windows 的文件关联功能,如搜索:windows 10 file type association command line
Lighthughjiajin
2022-10-18 19:23:29 +08:00
@fzls 已解决,谢谢大佬
ysc3839
2022-10-18 19:25:58 +08:00
@Lighthughjiajin 用 Python 官方提供的安装程序,有 install launcher 的选项,选上。
Lighthughjiajin
2022-10-18 19:30:06 +08:00
@ysc3839 是的,但是后面装 vs code 的时候,又把 .py 关联到了 vscode 上 --
flynaj
2022-10-18 19:41:20 +08:00
Windows 是文件关联,用 Python 安装包安装一次就自动关联了。#! /usr/bin/env python 这个是 Linux 下 shell 遵循的一个特性,Windows 并不支持这个特性。
ClericPy
2022-10-18 20:09:28 +08:00
Python3 有个 pylauncher 也就是 py.exe 是识别 shebang 的, 不知道是不是你问的
ysc3839
2022-10-18 21:08:10 +08:00
@ClericPy Launcher 识别只是能自动选择版本,Windows 没有把带 shebang 的脚本当作可执行文件直接执行的机制,就只能依赖 shell 提供的机制,比如说 cmd 会根据文件关联来启动。
ClericPy
2022-10-18 22:31:29 +08:00
@ysc3839 呃, 我怎么印象中加了 shebang 的 py 文件打开方式选 py.exe 以后, 双击就自动切换 python2 和 python3 呢
hefish
2022-10-18 22:58:17 +08:00
为啥有这种想法? windows 下不是应该写个 bat ,然后用 bat 调用 python 脚本吗?
ysc3839
2022-10-18 23:12:51 +08:00
@ClericPy 这没问题呀,Launcher 能识别然后自动选择版本,但是 Launcher 之外还是要依赖文件打开方式呀
elementp
2022-10-19 23:46:47 +08:00
powershell core 在 macOS/Linux 上是支持 shebang 的,不知道 Windows 下还支不支持

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/887871

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX