Python 有一个启动文件!

2025-06-10

Python 有一个启动文件!

封面照片由 Uriel Soberanes 在 Unsplash 上拍摄

所以,我想澄清一下。使用 Python 的时候就知道它有一个启动自定义文件。不是这周才发现的。我的意思是,Python 当然启动文件。所有东西都有启动文件!我只是想确保知道这个。(开个玩笑,我之前根本不知道有这个东西。)

在你提起之前,我已经知道bPython了,它是一款非常棒的 Python 解释器替代品,拥有语法高亮、制表符补全、自动缩进等功能,简直完美。我一直在用它。但这篇博文的主题不是这个。附言:如果你还不了解 bPython,我强烈推荐它(Windows 用户的情况可能有所不同)。

$PYTHONSTARTUP

如果您将环境变量$PYTHONSTARTUP设置为有效的 Python 文件,则该文件将在启动 Python 解释器时运行。

$ export PYTHONSTARTUP="~/.config/pythonrc.py"
Enter fullscreen mode Exit fullscreen mode

不用担心文件名。随便你怎么命名!python_startup.py或者直接写成pythonrc。你也可以把它放在任何你想要的目录中。只要确保你的$PYTHONSTARTUP环境变量匹配即可。然后,你就可以把任何你想要的内容放进这个文件了。

# ~/.config/pythonrc.py
a = "Wahoo!"
print("Soup")
try:
    import numpy as np
except ImportError:
    print("Could not import numpy.")
Enter fullscreen mode Exit fullscreen mode

尝试运行你的 Python 解释器。

$ python  # or python3
Enter fullscreen mode Exit fullscreen mode

您应该会看到类似以下内容的内容:

Python 3.7.0 (default, Jun 29 2018, 20:14:27)
[Clang 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Soup
>>> np
<module 'numpy' from '/usr/local/lib/python3.7/site-packages/numpy/__init__.py'>
>>> np.zeros((3, 2))
array([[0., 0.],
       [0., 0.],
       [0., 0.]])
>>> a
'Wahoo!'
Enter fullscreen mode Exit fullscreen mode

您可以导入常用的库,为自己创建变量等等。

sys.ps1 和 sys.ps2

一个巧妙的做法是设置sys.ps1sys.ps2变量,它们控制你的 Python 提示。

# ~/.config/pythonrc.py

import sys

sys.ps1 = "🌮"
sys.ps2 = "💩"

# ...
Enter fullscreen mode Exit fullscreen mode

回到交互式 REPL:

🌮 for i in range(10):
💩     print("I am a mature adult.")
💩
I am a mature adult.
I am a mature adult.
...
Enter fullscreen mode Exit fullscreen mode

事实上,你甚至可以将sys.ps1and设置sys.ps2为非字符串的对象!如果它们不是字符串,Python 就会调用str(obj)它们。

# ~/.config/pythonrc.py

import sys
from datetime import datetime

class CustomPS1:
    def __init__(self):
        self.count = 0

    def __str__(self):
        self.count += 1
        return f"({self.count}) {datetime.now().strftime('%H:%m %p')} > "

sys.ps1 = CustomPS1()
Enter fullscreen mode Exit fullscreen mode

在解释器中:

(1) 10:06 AM > for i in range(10):
...     print("Am I cool now?")
...
Am I cool now?
Am I cool now?
# ...
(2) 11:06 AM >
Enter fullscreen mode Exit fullscreen mode

-i 标志

除了这些新的超能力之外,您还可以暂时将任何Python 脚本设置为启动脚本。这对于某些交互式调试非常有用。假设您正在开发一个项目,并且有一个定义了一些函数的脚本:

# cool_script.py

def what_time_is_it():
    return "Party Time"
Enter fullscreen mode Exit fullscreen mode

您可以-i在运行 Python 解释器时使用该标志cool_script.py作为启动文件,而不是通常的文件。

$ python -i cool_script.py
>>> what_time_is_it()
'Party Time'
Enter fullscreen mode Exit fullscreen mode

如果你用启动文件做了一些很酷的事情,请分享给我!我很想知道!祝你编程愉快!

最初发布于assert_not magic?

鏂囩珷鏉ユ簮锛�https://dev.to/rpalo/python-has-a-startup-file-b7c
PREV
Ruby 概念 - 单例类
NEXT
使用 TypeScript 设置 Node Express API(2021)