Ответ 1
Вы можете изменить ~/.python-eggs
, чтобы не записываться группой/всеми. Я думаю, что это работает:
chmod g-wx,o-wx ~/.python-eggs
Я только что закончил установку моего пакета 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)
Есть ли способ избавиться от этого?
Вы можете изменить ~/.python-eggs
, чтобы не записываться группой/всеми. Я думаю, что это работает:
chmod g-wx,o-wx ~/.python-eggs
Вы можете подавлять предупреждения с помощью -W ignore
:
python -W ignore yourscript.py
Если вы хотите подавить предупреждения в своем script (цитата из документов):
Если вы используете код, который, как вы знаете, вызовет предупреждение, например, устаревшую функцию, но не хочет видеть предупреждение, тогда можно отключить предупреждение с помощью диспетчера контекстов catch_warnings:
import warnings
def fxn():
warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
fxn()
Внутри контекстного менеджера все предупреждения будут просто проигнорированы. Это позволяет использовать известный устаревший код без необходимости видеть предупреждение, не подавляя предупреждение для другого кода, который может не знать о его использовании устаревшего кода. Примечание: это можно гарантировать только в однопоточном приложении. Если два или более потока используют диспетчер контекстов catch_warnings одновременно, поведение undefined.
Если вы хотите просто игнорировать предупреждения, вы можете использовать filterwarnings
:
import warnings
warnings.filterwarnings("ignore")