我们使用第三方开源工具,它会生成警告:
DeprecationWarning: The compiler package is deprecated and removed in Python 3.x.
如何在不修改第三方代码的情况下抑制此警告?
我知道如何使用warnings.filter()
但我不能使用它:我py.test
从命令行调用,因此在创建警告之前没有执行我的代码的单个源代码行。
围绕控制台脚本创建包装器不是一种选择。
我们使用第三方开源工具,它会生成警告:
DeprecationWarning: The compiler package is deprecated and removed in Python 3.x.
如何在不修改第三方代码的情况下抑制此警告?
我知道如何使用warnings.filter()
但我不能使用它:我py.test
从命令行调用,因此在创建警告之前没有执行我的代码的单个源代码行。
围绕控制台脚本创建包装器不是一种选择。
您可以添加一个usercustomize
或sitecustomize
模块来调用warnings.filter()
. 它将在解释器启动时加载。
请参阅自定义模块:
Python 提供了两个钩子让你自定义它:
sitecustomize
和usercustomize
. 要查看它是如何工作的,您首先需要找到您的用户站点包目录的位置。启动 Python 并运行以下代码:>>> import site >>> site.getusersitepackages() '/home/user/.local/lib/python2.7/site-packages'
现在您可以在该目录中创建一个名为的文件
usercustomize.py
,并将您想要的任何内容放入其中。它将影响 Python 的每次调用,除非它-s
以禁用自动导入的选项启动。
sitecustomize
工作方式相同,但通常由计算机管理员在全局站点包目录中创建,并在usercustomize
.site
有关更多详细信息,请参阅模块的文档。
PYTHONUSERBASE
您可以使用环境变量影响 Python 的外观,因此您可以在此处将 Python 指向每个项目的usercustomize.py
文件,前提是您考虑将路径lib/python/site-packages
添加到基础:
$ python -m site --user-site
/Users/someuser/Library/Python/2.7/lib/python/site-packages
$ PYTHONUSERBASE=/foo/bar python -m site --user-site
/foo/bar/lib/python/site-packages
在上面的示例中,如果PYTHONUSERBASE
设置为/foo/bar
,则 Python 将加载(/foo/bar/lib/python/site-packages/usercustomize.py
如果存在)。
在 Python virtualenvsite.py
中,使用了基于site.py
Python 2.6 之前的自定义文件;这个版本省略了这个getusersitepackages()
功能。如果文件lib/pythonX.X/no-global-site-packages.txt
存在,usercustomize
模块将不会被导入。您必须改用虚拟 env目录sitecustomize.py
中的文件。lib/python/site-packages