【问题标题】:How can I disable generation of pyc and pyo files?如何禁用 pyc 和 pyo 文件的生成?
【发布时间】:2012-06-11 15:38:54
【问题描述】:

无论我做什么,Autotools 都坚持在构建我的项目时(而不是在运行项目时)生成 pyo 和 pyc 文件。问题是我的Python配置有些奇怪,我不希望Python编译器在安装过程中运行。有什么办法可以禁止生成这些文件?

作为参考,以下是我尝试过的事情:

  • 设置 py_compile=echo 以便 automake 不会编译 Python 脚本
  • 在 Makefile.am 中手动定义 install-pythonPYTHON
  • 设置 PYTHONFLAGS=-B
  • 在 Makefile.am、configure.ac 等中设置 PYTHONDONTWRITEBYTECODE。
  • 创建一个新的 automake 变量“python2dir”并使用 dist_python2_DATA = Script.py 安装脚本

基本上,如果文件以 .py 扩展名结尾,无论您做什么,Automake 都会创建 pyc 和 pyo 文件。

【问题讨论】:

标签: python autotools automake


【解决方案1】:

请参阅documentation 中的 -B 选项。

【讨论】:

  • 我需要一种方法来告诉 automake 在将 Python 脚本安装到站点包时使用该选项。
  • 尝试设置 PYTHONDONTWRITEBYTECODE 环境变量,记录在here
  • 我试过把它放在configure.ac、Makefile.am等中。没用,可能b/c automake有自己的环境变量。这实际上是一个 automake/autotools 问题,而不是 Python 问题。无论如何感谢您的帮助。
  • @MattFichman:据我了解,自动工具在构建项目时会生成字节码文件。他们可能会使用compileall 模块,因此此答案中给出的命令行选项和环境变量对您毫无用处——它们会阻止在模块导入 时自动创建pyc/pyo 文件。您可能想澄清您的问题。
  • automake 文档说“noinst_PYTHON 中列出的任何文件都不会被编译”here,所以也许你可以把 *.py 放进去。
【解决方案2】:

请再试一次。

dist_python_DATA = foo.py

foo.py 视为任何常规文件,分发它,并将其安装在$(pythondir) 中。 _DATA 不会触发任何类型的编译。

【讨论】:

    猜你喜欢
    • 2015-07-05
    • 1970-01-01
    • 2013-08-21
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 2012-02-09
    相关资源
    最近更新 更多