在非交互模式下将选项传递给Python可执行文件

时间:2010-01-16 20:06:17

标签: python

我想每次都将一些选项传递给Python(版本2.6),而不仅仅是在交互模式下。有没有我可以输入这些命令的文件?

编辑:具体来说,我想要贬低弃用警告。

4 个答案:

答案 0 :(得分:6)

Linux下Python脚本开头的#!/usr/bin/python行也可用于将选项传递给解释器。

每当Python启动时,还会导入许多模块。在我的系统上,可能会以其他海报建议的方式修改设置选项的候选人在这里:

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

如果您只是将此代码放在该文件中:

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

它会关闭所有内容的弃用警告,这可能不是您想要的。您可以使用代码来检查您自己的PYTHONNODEPRECATIONWARNING环境变量,以便您拥有更多控制权。

finding a reference to sitecustomize.py in Dive Into Pythonreference to the sitecustomize module in the Python 2.6 documentation之后,我认为该文件是您想要的最佳选择。在Python 2.6中,通过其用户特定的site-packages目录,可以基于每个用户进行设置,但您可能希望找到任何系统范围的sitecustomize.py文件,并将其复制到您的文件中或找到一种方法明确地将它导入你的。

答案 1 :(得分:3)

大多数选项都可以作为环境变量传递 - 执行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相当于-igrep剪切该信息,因为它出现在上一行行; - )。

答案 2 :(得分:1)

对不起,我不太确切地知道你的问题是什么,但是,你可能会尝试:

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

所以,这可能不会真正回答这个问题。

答案 3 :(得分:0)

您是否尝试过~/.pythonrc.py?它在Python手册页中列出,其中包含以下说明:

  

用户特定的初始化文件   由用户模块加载;没用过   默认或大多数应用程序。

我不确定“用户”模块意味着什么,但我认为值得尝试一下。

编辑:看起来你的python脚本中必须有import user,然后Python会在启动时自动执行这个〜/ .pythonrc.py文件(而不仅仅是在交互模式下)。这应该适用于Python版本&lt; 3.0。 http://docs.python.org/library/user.html