阻止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文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章