我曾经在Python脚本的顶部添加shebang行,
#!/usr/bin/python
...
Run Code Online (Sandbox Code Playgroud)
我可以执行my.py文件,
chmod a+r my.py
./my.py
Run Code Online (Sandbox Code Playgroud)
但是在编译成字节码之后,脚本只能由python执行,并且shebang不再起作用了.
python my.pyc
Run Code Online (Sandbox Code Playgroud)
反正有没有让shebang可以编译python脚本?
./my.pyc
Run Code Online (Sandbox Code Playgroud)
Shebang仅适用于文本脚本,而不适用于二进制文件.然而,您可以使用直接binfmt_misc执行*.pyc文件,如此Python ML线程中所报告的:
Linux,您可以使用binfmt_misc从pyc代码中生成可执行文件.跑:
Run Code Online (Sandbox Code Playgroud)import imp,sys,string magic = string.join(["\\x%.2x" % ord(c) for c in imp.get_magic()],"") reg = ':pyc:M::%s::%s:' % (magic, sys.executable) open("/proc/sys/fs/binfmt_misc/register","wb").write(reg)一旦在您的Linux系统上(或者更确切地说,在启动时),并且所有pyc文件都变为可执行文件(如果设置了x位).
在Debian中,安装binfmt-support软件包将为您完成.
(重点是我的,请注意这将适用于所有Debian衍生产品,包括Ubuntu.同样的解决方案也适用于Fedora).