28.15. user — 特定于用户的配置钩子 — Python 文档
28.15. 用户 — 用户特定的配置钩子
自 2.6 版起已弃用:user 模块已在 Python 3 中删除。
作为一项政策,Python 不会在 Python 程序启动时运行用户指定的代码。 (只有交互式会话执行 PYTHONSTARTUP 环境变量中指定的脚本(如果存在)。
但是,某些程序或站点可能会发现允许用户拥有标准自定义文件很方便,该文件会在程序请求时运行。 该模块实现了这样的机制。 希望使用该机制的程序必须执行该语句
import user
user 模块在用户的主目录中查找文件 .pythonrc.py
,如果它可以打开,则执行它(使用 execfile())(使用 execfile())模块 user's) 全局命名空间。 此阶段的错误不会被捕获; 如果需要,这取决于导入 user 模块的程序。 假设主目录由 HOME
环境变量命名; 如果未设置,则使用当前目录。
如果用户的 .pythonrc.py
想要根据 Python 版本做不同的事情,可以想象它可以测试 sys.version
。
对用户的警告:在 .pythonrc.py
文件中放置的内容要非常保守。 由于您不知道哪些程序会使用它,因此更改标准模块或函数的行为通常不是一个好主意。
对希望使用此机制的程序员的建议:让用户为您的包指定选项的一种简单方法是让他们在您在模块中测试的 .pythonrc.py
文件中定义变量。 例如,具有详细级别的模块 spam
可以查找变量 user.spam_verbose
,如下所示:
import user
verbose = bool(getattr(user, "spam_verbose", 0))
(getattr() 的三参数形式用于用户未在其 .pythonrc.py
文件中定义 spam_verbose
的情况。)
具有广泛定制需求的程序最好阅读特定于程序的定制文件。
有安全或隐私问题的程序应该不导入这个模块; 用户可以通过在 .pythonrc.py
文件中放置任意代码来轻松闯入程序。
一般使用的模块应该而不是导入这个模块; 它可能会干扰导入程序的运行。