V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Lighthughjiajin
V2EX  ›  程序员

关于在 Windows 终端执行 Python 文件

  •  
  •   Lighthughjiajin · 2022-10-18 18:48:01 +08:00 · 2210 次点击
    这是一个创建于 799 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    #! /usr/bin/env python
    
    print('Hello~')
    

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

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

    求大佬解答。

    15 条回复    2022-10-19 23:46:47 +08:00
    89712
        1
    89712  
       2022-10-18 18:49:48 +08:00 via iPhone
    msys2 了解下
    Envov
        2
    Envov  
       2022-10-18 19:02:42 +08:00
    bat
    ysc3839
        3
    ysc3839  
       2022-10-18 19:09:55 +08:00 via Android
    如果 shell 是 cmd ,那直接执行.py 文件会使用.py 关联的程序打开,不需要加 shebang 。
    如果使用的是 MSYS2 或 Cygwin 的 bash ,那按照你说的加上 shebang 即可。
    Lighthughjiajin
        4
    Lighthughjiajin  
    OP
       2022-10-18 19:12:02 +08:00
    @ysc3839 请问如何关联 py 文件为 python 解释器
    fzls
        5
    fzls  
       2022-10-18 19:12:16 +08:00
    使用 windows 的文件关联功能,如搜索:windows 10 file type association command line
    Lighthughjiajin
        6
    Lighthughjiajin  
    OP
       2022-10-18 19:23:29 +08:00
    @fzls 已解决,谢谢大佬
    ysc3839
        7
    ysc3839  
       2022-10-18 19:25:58 +08:00 via Android
    @Lighthughjiajin 用 Python 官方提供的安装程序,有 install launcher 的选项,选上。
    Lighthughjiajin
        8
    Lighthughjiajin  
    OP
       2022-10-18 19:30:06 +08:00
    @ysc3839 是的,但是后面装 vs code 的时候,又把 .py 关联到了 vscode 上 --
    flynaj
        9
    flynaj  
       2022-10-18 19:41:20 +08:00 via Android
    Windows 是文件关联,用 Python 安装包安装一次就自动关联了。#! /usr/bin/env python 这个是 Linux 下 shell 遵循的一个特性,Windows 并不支持这个特性。
    ClericPy
        10
    ClericPy  
       2022-10-18 20:09:28 +08:00
    Python3 有个 pylauncher 也就是 py.exe 是识别 shebang 的, 不知道是不是你问的
    ysc3839
        11
    ysc3839  
       2022-10-18 21:08:10 +08:00 via Android
    @ClericPy Launcher 识别只是能自动选择版本,Windows 没有把带 shebang 的脚本当作可执行文件直接执行的机制,就只能依赖 shell 提供的机制,比如说 cmd 会根据文件关联来启动。
    ClericPy
        12
    ClericPy  
       2022-10-18 22:31:29 +08:00
    @ysc3839 呃, 我怎么印象中加了 shebang 的 py 文件打开方式选 py.exe 以后, 双击就自动切换 python2 和 python3 呢
    hefish
        13
    hefish  
       2022-10-18 22:58:17 +08:00
    为啥有这种想法? windows 下不是应该写个 bat ,然后用 bat 调用 python 脚本吗?
    ysc3839
        14
    ysc3839  
       2022-10-18 23:12:51 +08:00
    @ClericPy 这没问题呀,Launcher 能识别然后自动选择版本,但是 Launcher 之外还是要依赖文件打开方式呀
    elementp
        15
    elementp  
       2022-10-19 23:46:47 +08:00
    powershell core 在 macOS/Linux 上是支持 shebang 的,不知道 Windows 下还支不支持
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1769 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:32 · PVG 00:32 · LAX 08:32 · JFK 11:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.