代码之家  ›  专栏  ›  技术社区  ›  chiggsy

以非交互模式将选项传递给python可执行文件

  •  3
  • chiggsy  · 技术社区  · 15 年前

    我希望每次都将一些选项传递给python(2.6版),而不仅仅是在交互模式下。有没有一个文件可以放这些命令?

    编辑:具体地说,我想消除贬低警告。

    4 回复  |  直到 12 年前
        1
  •  6
  •   Bill the Lizard    12 年前

    这个 #!/usr/bin/python 在Linux下,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 Python 而这 reference to the sitecustomize module in the Python 2.6 documentation ,我认为那个文件是你想要的最好的选择。在python 2.6中,虽然您可能希望找到任何系统范围的sitecustomize.py文件,并将其复制到您的文件中,或者找到一种方法将其显式导入到您的文件中,但使用其特定于用户的site packages目录,可以根据每个用户设置此文件。

        2
  •  3
  •   Alex Martelli    15 年前

    大多数选项都可以作为环境变量传入--do 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 剪掉那个信息,因为它马上就会出现 以前的 行;-)。

        3
  •  1
  •   benno    15 年前

    对不起,我不太清楚你的问题是什么,但是,你可以尝试:

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

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

        4
  •  0
  •   Roman    15 年前

    你试过了吗? ~/.pythonrc.py? 它在python手册页中列出,描述如下:

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

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

    编辑:看起来你必须 import user 在python脚本中,然后python将在启动时自动执行这个~/.pythonrc.py文件(而不仅仅是在交互模式下)。这应该在python版本<3.0中有效。 http://docs.python.org/library/user.html