python-tests

Python tool: https://github.com/astral-sh/uv

uvx pycowsay 'hello world!'
$ echo 'import requests; print(requests.get("https://astral.sh"))' > example.py

$ uv add --script example.py requests
Updated `example.py`
$ uv run example.py
Reading inline script metadata from: example.py
Installed 5 packages in 12ms
<Response [200]>
uv run --python 3.12 https://git.hatter.ink/hatter/python-tests/raw/branch/main/leap_year.py
uv run 'https://script.hatter.ink/@0/show_myip.py'

https://developer.aliyun.com/mirror/pypi/

~/.pip/pip.conf

[global]
index-url = https://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

~/.config/uv/uv.toml

[[index]]
url = "https://mirrors.aliyun.com/pypi/simple/"
default = true
pip install requests
pip install cryptography

PYTHONPATH=./.venv/lib/python3.10/site-packages/ ./show_my_ip.py 

show_myip.py

#! /usr/bin/env uv run

# /// script
# requires-python = ">=3.9"
# dependencies = [
#     "requests>=2.32.5",
# ]
# ///
import requests;

IP_ACTION_URL = "https://hatter.ink/ip/ip.jsonp"

if __name__ == "__main__":
    response = requests.get(IP_ACTION_URL, timeout=10)
    if response.status_code != 200:
        print("[ERROR]", response.status_code)
    else:
        response_json = response.json()
        print(response_json)
        print("Your IP is:", response_json['ip'])
./show_myip.py 

在 Python 中,print() 函数默认会对输出进行缓存(buffering)。

import time

for i in range(5, 0, -1):
    # end="" 让它不换行,flush=True 强制立即刷新缓存
    print(f"\rcountdown: {i}", end="", flush=True)
    time.sleep(1)
print("\ndone")

通过设置环境变量也可以禁止缓存:

export PYTHONUNBUFFERED=1
S
Description
No description provided
Readme 245 KiB
Languages
Python 100%