46

我刚刚MySQLdb为 Python 2.6 安装了我的包,现在当我使用 导入它时import MySQLdb,会出现一个用户警告

/usr/lib/python2.6/site-packages/setuptools-0.8-py2.6.egg/pkg_resources.py:1054:
UserWarning: /home/sgpromot/.python-eggs is writable by group/others and vulnerable 
to attack when used with get_resource_filename. Consider a more secure location 
(set with .set_extraction_path or the PYTHON_EGG_CACHE environment variable).
  warnings.warn(msg, UserWarning)

有没有办法摆脱这个?

4

2 回答 2

79

您可以更改~/.python-eggs为不可按组/每个人写入。我认为这有效:

chmod g-wx,o-wx ~/.python-eggs
于 2013-07-13T03:35:54.863 回答
29

您可以使用以下命令抑制警告-W ignore

python -W ignore yourscript.py

如果您想抑制脚本中的警告(引用自文档):

如果您正在使用您知道会引发警告的代码,例如不推荐使用的函数,但不想看到警告,则可以使用 catch_warnings 上下文管理器抑制警告:

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

在上下文管理器中,所有警告都将被忽略。这允许您使用已知已弃用的代码,而不必查看警告,同时不会抑制可能不知道其使用已弃用代码的其他代码的警告。注意:这只能在单线程应用程序中得到保证。如果两个或更多线程同时使用 catch_warnings 上下文管理器,则行为未定义。

如果您只想完全忽略警告,可以使用filterwarnings

import warnings
warnings.filterwarnings("ignore")
于 2013-07-13T03:30:01.680 回答