8

有没有办法阻止 python 创建 .pyc 文件,已经在 Python 脚本的 shebang(或幻数,如果你愿意的话)中?

不工作:

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

4 回答 4

7

可以通过将您的 python interperter 路径直接放在 she bang 而不是使用 env 中。

#!/usr/bin/python -B

当然,这意味着您失去了使用 env 的一些可移植性优势。在wikipedia Shebang page上有一个关于 env 的讨论。他们使用 python 作为他们的环境示例之一。

于 2012-11-14T10:10:28.693 回答
4

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

(基于来自 glglgl 的输入改进)

#!/bin/sh
"exec" "python" "-B" "$0" "$@"

# The rest of the Python program follows below:
于 2012-11-14T10:15:07.290 回答
4

根据 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

于 2012-11-14T10:15:45.167 回答
3

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

因此env尝试python -B将给定文件作为一个参数执行,而不是python-B当前文件作为两个参数执行。

我看不到实现预期目标的方法。

于 2012-11-14T10:00:37.087 回答