阻止Python在shebang中生成pyc文件[重复]

Posted

技术标签:

【中文标题】阻止Python在shebang中生成pyc文件[重复]【英文标题】:Stop Python from generating pyc files in shebang [duplicate] 【发布时间】:2012-11-02 19:30:19 【问题描述】:

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

不工作:

#!/usr/bin/env python -B

【问题讨论】:

@VajkHermecz,不,我的问题更具体。 是的,抱歉相关会是一个更好的词... srry 投票重新开放,因为它与重复的含义不同。 所谓的“重复”是一个完全不同的问题,没有任何与shebang相关的答案。 【参考方案1】:

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

#!/usr/bin/python -B

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

【讨论】:

【参考方案2】:

根据 env 的手册页,您可以通过 name=value 来设置环境变量。 PYTHONDONTWRITEBYTECODE 环境变量导致 Python 不写入 .py[co] 文件(与 -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

【讨论】:

对我来说,脚本只是挂起...... 它是否只适用于python -B script.py?我刚刚测试了一个简单的脚本,它对我来说似乎工作正常。 我也是。这似乎不起作用。 是的,它适用于python -B script.py 【参考方案3】:

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

改进基于来自 glglgl 的输入)

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

# The rest of the Python program follows below:

【讨论】:

自我注意:以后用***.com/a/9057699/193892改进 看起来很棒! "s 用于 shell,被 python 忽略... 但是它破坏了语法高亮... @glglgl,哈哈,我虽然可能。如果脚本被称为 something.py 会再次出现吗? :) 是的,可以。但是脚本有一个 .py 扩展名......也不好,但可能你必须死一次......【参考方案4】:

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

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

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

【讨论】:

有趣的是,Python Windows Launcher 不知道这个限制并且正确地传递了选项(un)。所以一次 Python on Window 效果更好;)

以上是关于阻止Python在shebang中生成pyc文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python啥情况下会生成pyc文件

关于.pyc文件

python如何编译生成二进制文件?

Python编程时.py与.pyc文件的介绍

Python生成pyc文件

Python之code对象与pyc文件