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

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

不工作:

#!/usr/bin/env python -B

【问题讨论】:

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

标签: python shell scripting pyc


【解决方案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:
    

    【讨论】:

    • 自我注意:以后用stackoverflow.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 效果更好;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2018-11-05
    • 2017-05-21
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多