优雅的开始一个Python项目
这是我在初始化一个Python项目时,一键生成的项目文件。它自动完成了git初始化、环境管理、日志模块这三件事情,并在最后进入了虚拟环境。
uv安装
uv
是一个现代的Python包管理和项目管理工具。uv中文文档
安装uv:
# unix:
curl -LsSf https://astral.sh/uv/install.sh | sh
# windows:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
自动初始化脚本
有了uv,可以方便的初始化一个项目。将以下代码写在sh文件中,
# InitializeANewPythonProject.sh 适用于Linux/MacOS
mkdir $1 # 创建项目目录
cd $1
uv init # uv初始化项目
mkdir config # 用于存放配置文件
touch config/.env # 用于管理环境变量,可以用dotenv模块方便的使用
touch config/config.toml # 用于管理项目配置
echo "*.env" >> .gitignore # 一般会把.env忽略,可选
# 创建全局日志管理器,其他模块可以直接引用
mkdir utils
touch utils/Logger.py
[ -n "$(tail -c 1 utils/Logger.py)" ] && echo >> utils/Logger.py
cat << 'EOF' >> utils/Logger.py
import logging
from logging.handlers import RotatingFileHandler
def setup_global_logger():
logger = logging.getLogger()
logger.setLevel(logging.INFO) # 设置全局最低级别
formatter = logging.Formatter(
'[%(asctime)s] [%(levelname)s] %(name)s:%(lineno)d - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
file_handler = RotatingFileHandler(
'main.log', maxBytes=10 * 1024 * 1024, backupCount=5, encoding='utf-8'
)
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(formatter)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(formatter)
if logger.hasHandlers():
logger.handlers.clear()
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger
EOF
sed -i '1i\from utils.Logger import setup_global_logger\nsetup_global_logger()' main.py
# 配置Python环境
uv venv
source .venv/bin/activate # 激活环境
运行脚本
脚本接收一个路径。这个目录不需要你手动去创建,它会自动新建目录的。
bash InitializeANewPythonProject.sh /home/NewFolder
然后添加Python库时可以使用pip,但更好的方式是:
uv add <package-name>