使用 setuptools 构建包时如何避免收到无用的警告?

How can I avoid getting useless warnings while building my package using setuptools?

似乎 setuptools 触发了各种真正为零值的警告,我想摆脱它们,因为它们在持续集成进程中发送垃圾信息,使得更难发现真正的警告。

以下是我确实想要摆脱的那些:

python setup.py -q bdist_wheel
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.pyc' found under directory '*'
warning: no previously-included files matching '*.pyo' found under directory '*'
warning: no previously-included files matching '*.orig' found under directory '*'
warning: no files found matching '*.md' under directory 'releases'
warning: no files found matching '*.rst' under directory 'releases'
warning: no files found matching '*.json' under directory 'releases'
warning: no previously-included files matching '*' found under directory 'examples/node_modules'
no previously-included directories found matching 'examples/node_modules'
warning: build_py: byte-compiling is disabled, skipping.

warning: install_lib: byte-compiling is disabled, skipping.

似乎所有这些都是由 MANIFEST.in 文件引起的,但那里的条件确实有存在的理由,而且当排除模式确实找不到匹配的文件时,这显然不是生成警告的原因?!

目前我只找到一个解决此问题的方法: export PYTHONDONTWRITEBYTECODE= 这将避免在构建过程中收到这些恼人的警告。

我使用 makefile 来构建我的项目,我必须将以下行添加到顶部:

unexport PYTHONDONTWRITEBYTECODE

在 shell 中,您也必须 unset PYTHONDONTWRITEBYTECODE。将它从 1 设置为 0 将不起作用。不过,我正在使用 zsh,所以也许上面的答案在其他地方也适用。

此外,您可以将-B直接传递给python以禁用字节编译,但环境变量优先于它(至少在Python 3版本我是使用 - 3.6.8)。不过,我没有看到强制打开字节编译的选项。

最后,您可以将 --help 传递给大多数 setup.py 命令以获取有关它们支持的标志的信息。例如,build_pyinstall_lib 支持 --compile/-c--no-compile 标志,这应该可以帮助您进行细粒度控制,尽管根据我的经验环境变量再次优先。