关于shell:阻止Python在shebang中生成pyc文件

Stop Python from generating pyc files in shebang

本问题已经有最佳答案,请猛点这里访问。

有没有办法阻止python创建.pyc文件,已经存在于Python脚本的shebang(或魔术数字)中?

不工作:

1
#!/usr/bin/env python -B


可以将你的python interperter路径直接放在她的bang而不是使用env。

1
#!/usr/bin/python -B

当然这意味着你失去了使用env的一些便携性优势。在维基百科Shebang页面上讨论了这个问题。他们使用python作为他们的env示例之一。


根据env的手册页,您可以传递name=value来设置环境变量。 PYTHONDONTWRITEBYTECODE环境变量导致Python不写.py [co]文件(与-B标志相同的python)。所以使用

1
#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python

应该做的伎俩。

编辑:

我用一个简单的Python脚本测试了这个:

1
2
#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python
print 1

然后

1
2
3
4
5
$chmod +x test.py
$./test.py
1
$ls
test.py

(但不是test.pyc)


是的,当且仅当我们假设Python程序在某个POSIX兼容系统(/ bin / sh)中运行时,这将起作用:

(根据glglgl的输入改进)

1
2
3
4
#!/bin/sh
"exec""python""-B""$0""$@"

# The rest of the Python program follows below:


唉,没有。 shebang的东西仅限于提供可执行文件和一个参数。

所以env尝试使用给定文件作为一个参数执行python -B,而不是python-B,并将当前文件作为两个参数。

我没有看到实现目标的方法。