有没有办法阻止 python 创建 .pyc 文件,已经在 Python 脚本的 shebang(或幻数,如果你愿意的话)中?
不工作:
#!/usr/bin/env python -B
可以通过将您的 python interperter 路径直接放在 she bang 而不是使用 env 中。
#!/usr/bin/python -B
当然,这意味着您失去了使用 env 的一些可移植性优势。在wikipedia Shebang page上有一个关于 env 的讨论。他们使用 python 作为他们的环境示例之一。
是的,当且仅当,我们假设 Python 程序在某种 POSIX 兼容的系统中运行(对于 /bin/sh),这将起作用:
(基于来自 glglgl 的输入改进)
#!/bin/sh
"exec" "python" "-B" "$0" "$@"
# The rest of the Python program follows below:
根据 env 的手册页,您可以通过name=value
设置环境变量。PYTHONDONTWRITEBYTECODE
环境变量导致 Python 不写入 .py[co] 文件(与 to 的标志-B
相同python
)。所以使用
#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python
应该做的伎俩。
编辑:
我用一个简单的 Python 脚本对此进行了测试:
#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python
print 1
然后
$chmod +x test.py
$./test.py
1
$ls
test.py
(但不是test.pyc
)
唉,没有。shebang 的东西仅限于提供一个可执行文件和一个参数。
因此env
尝试python -B
将给定文件作为一个参数执行,而不是python
将-B
当前文件作为两个参数执行。
我看不到实现预期目标的方法。