如何避免pip安装本地包时生成build和project.egg-info污染项目目录?
如何避免pip安装/构建本地Python包时生成build和egg-info文件夹?
当使用pip install直接安装本地项目目录,或用pip wheel构建包时,pip默认会在项目根目录生成build(临时构建文件)和project.egg-info(包元数据)文件夹,以下是几种抑制该行为、保持项目目录整洁的方法:
1. 构建wheel时指定临时构建目录
使用pip wheel命令时,通过--build-dir参数指定一个临时目录存放构建文件,避免污染项目根目录:
# Linux/macOS:用系统临时目录,构建后自动清理 python -m pip wheel . -w .dist --build-dir "$(mktemp -d)" # Windows:使用系统临时目录 python -m pip wheel . -w .dist --build-dir %TEMP%\pip_build
生成的wheel文件会保存在.dist目录,临时构建目录可随系统自动清理或手动删除。
2. 先构建wheel再安装,跳过直接目录安装
直接安装本地目录会触发项目内的构建流程,改为先构建wheel再安装wheel文件,彻底避免在项目根目录生成文件:
# 1. 构建wheel到指定目录,同时指定临时构建目录 python -m pip wheel . -w .dist --build-dir ./tmp_build # 2. 安装生成的wheel包 pip install .dist/project-*.whl # 3. 清理临时构建目录 rm -rf ./tmp_build # Linux/macOS # rmdir /s /q tmp_build # Windows
3. 通过pyproject.toml配置指定输出目录
在项目的pyproject.toml中添加setuptools配置,将build和egg-info目录指定到非项目根目录(比如.dist子目录):
[tool.setuptools] # 将egg-info元数据目录指定到.dist下 egg-info = ".dist/project.egg-info" # 将临时构建目录指定到.dist下 build-dir = ".dist/build"
后续所有pip操作生成的文件都会集中到.dist目录,方便统一管理和清理。
4. 全局配置pip的构建目录
修改pip的全局配置文件,让所有pip构建操作默认使用系统临时目录,避免在任何项目根目录生成文件:
- Linux/macOS:编辑
~/.config/pip/pip.conf - Windows:编辑
%APPDATA%\pip\pip.ini
添加以下配置:
[global] # Linux/macOS 使用系统临时目录 build-dir = /tmp/pip_build # Windows 使用系统临时目录 # build-dir = %TEMP%\pip_build
注意事项
如果使用开发模式安装(pip install -e .),由于需要实时生成元数据供开发环境使用,egg-info目录无法完全避免,但可以通过上述pyproject.toml配置将其转移到指定目录,避免污染项目根目录。
内容的提问来源于stack exchange,提问作者t3chb0t
相关产品推荐
相关产品推荐

