Передача параметров в исполняемый файл Python в неинтерактивном режиме - PullRequest
3 голосов
/ 16 января 2010

Я хотел бы передавать некоторые параметры Python (версия 2.6) каждый раз, а не только в интерактивном режиме.Есть ли файл, в который я могу поместить такие команды?

РЕДАКТИРОВАТЬ: В частности, я хочу заставить замолчать предупреждения об устаревании.

Ответы [ 4 ]

6 голосов
/ 17 января 2010

Строка #!/usr/bin/python в начале скрипта Python под Linux может также использоваться для передачи опций интерпретатору.

Существует также ряд модулей, импортируемых при каждом запуске Python.В моей системе вероятный кандидат на изменение для установки параметров способом, предложенным другими авторами, находится здесь:

/usr/lib/python2.6/site-packages/sitecustomize.py

Если вы просто поместите этот код в этот файл:

import warnings
warnings.simplefilter("ignore", DeprecationWarning)

он всегда отключает предупреждения об устаревании для всего, что может не соответствовать вашим ожиданиям.Вместо этого вы можете вставить код, который будет проверять вашу собственную переменную окружения PYTHONNODEPRECATIONWARNING, чтобы у вас было больше контроля.

После поиска ссылки на sitecustomize.py в Dive Into Python и ссылка на модуль sitecustomize в документации по Python 2.6 , я думаю, что этот файл - ваш лучший выбор для того, что вы хотите.В Python 2.6 с его пользовательским каталогом site-packages можно настроить его для каждого пользователя, хотя вы можете найти любой общесистемный файл sitecustomize.py и либо скопировать его в свой, либо найти способявно импортируйте его в свой.

3 голосов
/ 16 января 2010

Большинство параметров могут быть переданы как переменные среды - для просмотра списка выполните python -h:

$ py26 -h|grep PYTH
-B     : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x
-d     : debug output from parser; also PYTHONDEBUG=x
-E     : ignore PYTHON* environment variables (such as PYTHONPATH)
         if stdin does not appear to be a terminal; also PYTHONINSPECT=x
-O     : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x
-s     : don't add user site directory to sys.path; also PYTHONNOUSERSITE
-u     : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
-v     : verbose (trace import statements); also PYTHONVERBOSE=x
PYTHONSTARTUP: file executed on interactive startup (no default)
PYTHONPATH   : ':'-separated list of directories prefixed to the
PYTHONHOME   : alternate <prefix> directory (or <prefix>:<exec_prefix>).
PYTHONCASEOK : ignore case in 'import' statements (Windows).
PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.

Вас интересуют другие флаги, которые нельзя установить с помощью переменных среды?

PS * PYTHONINSPECT=x является эквивалентом -i (grep обрезает эту информацию, потому что она поступает в предыдущей строке; -).

1 голос
/ 17 января 2010

Извините, я не совсем понимаю, в чем ваш вопрос, но вы можете попробовать:

import warnings
warnings.simplefilter("ignore", DeprecationWarning)

Так что, на самом деле это может и не ответить на вопрос.

0 голосов
/ 16 января 2010

Вы пробовали ~/.pythonrc.py? Он указан на справочной странице Python со следующим описанием:

Пользовательский файл инициализации загружается пользовательским модулем; не используется по умолчанию или большинством приложений.

Я не уверен, что означает пользовательский модуль, но я думаю, что стоит попробовать.

РЕДАКТИРОВАТЬ: похоже, вам нужно import user в ваших скриптах Python, и тогда Python автоматически запустит этот файл ~ / .pythonrc.py при запуске (а не только в интерактивном режиме). Это должно работать в Python версии http://docs.python.org/library/user.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...