为了账号安全,请及时绑定邮箱和手机立即绑定

Shebang注释:Windows和Linux上的Python脚本?

/ 猿问

Shebang注释:Windows和Linux上的Python脚本?

跃然一笑 2019-11-15 10:45:18

我有一些用Python编写的小型实用程序脚本,希望在Windows和Linux上都可以使用。我想避免必须显式调用Python解释器。是否有一种简单的方法可以将shebang标记指向Windows和Linux上的正确位置?如果不是,是否存在另一种允许在Windows和Linux上隐式调用Python解释器的方法,而不必在操作系统之间进行传输时修改脚本?


编辑:Windows提供了对Shebang的shebang支持,但我想在Windows而不是Cygwin上使用本机Windows Python解释器。


编辑#2:似乎shebang标记会覆盖Cygwin终端中的文件关联。我想我可以卸载Cygwin Python并将符号链接/ usr / bin / python链接到Windows原生Python。


查看完整描述

3 回答

?
桃花长相依

在docs中阅读Windows的Python Launcher,最初在PEP 397中进行了描述。它使您可以在“ py.ini”中定义自定义shebang配置(例如使用pypy),并且开箱即可使用虚拟shebang(例如#!/usr/bin/env python3)或带有真实路径(例如)的shebang #!"C:\Python33\python.exe"。(对于包含空格的路径,必须加引号。)您还可以在命令行中添加命令行选项。例如,以下脚本在脚本终止后添加了进入交互模式的选项:#!/usr/bin/python3 -i。


安装程序会将.py(控制台)和.pyw(GUI)脚本文件类型与分别命名的启动器py.exe和pyw.exe关联,以便在Windows中启用对脚本的支持。对于所有用户安装,启动器将安装到Windows文件夹(即%SystemRoot%)。对于每个用户的安装,您可能需要手动将安装目录添加到PATH,以便在外壳程序(*)中使用py.exe。然后在命令行可以通过的Python运行py -2,py -3,py -2.6,py -3.3-32(32位),等等。当结合-m使用特定版本的解释器(例如)以脚本形式运行模块时,启动器非常方便py -3 -m pip install。


(*)对于启动器的按用户安装,3.5 +中的新安装程序默认为“%LocalAppData%\ Programs \ Python \ Launcher”,而不是将其安装在“ python.exe”旁边,并且它将自动将此目录添加到PATH。


查看完整回答
反对 回复 2019-11-15
?
www说

除非您使用的是cygwin,否则Windows不支持shebang。但是,当您安装python时,它将添加为.py文件的文件关联。如果仅将脚本名称放在命令行上,或者在Windows资源管理器中双击它,它将通过python运行。


我要做的是#!/usr/bin/env python在脚本中包含一个shebang。这允许在Linux上提供shebang支持。如果您在安装了python的Windows机器上运行它,则文件关联应该在那里,它也将运行。


查看完整回答
反对 回复 2019-11-15
?
千万里不及你

很抱歉打开旧主题。


我创建一个文件py.cmd并将其放在C:\Windows\System32文件夹中


py.bat:


@(

@set /p shebang=

)<%1

@set shebang=%shebang:#! =%

@%shebang% %1 %2 %3 %4 %5 %6 %7 %8 %9

py.bat 文件说明:


从*.py文件中获取第一行

删除shebang字符 "#! "

使用shebang python路径运行python文件

所有Windows python脚本都必须以shebang行作为代码的第一行:


#! c:\Python27\python.exe

要么


#! c:\Python37\python.exe

然后运行它: cmd> py SomePyFile.py param1 param1 paramX


查看完整回答
反对 回复 2019-11-15

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信