Python Pyramid项目构建残留已删除视图文件问题咨询
解决Pyramid项目构建时残留旧视图文件的问题及文件控制方案
一、彻底清除当前残留问题
- 卸载项目并清理缓存
- 先卸载已安装的项目:
myproject/env/bin/pip uninstall myproject -y - 清理pip缓存,避免残留安装包:
myproject/env/bin/pip cache purge
- 先卸载已安装的项目:
- 删除项目本地的构建元数据
- 删除项目根目录下的
.egg-info文件夹(比如myproject/myproject.egg-info),这个文件夹记录了构建时的文件列表,旧文件的引用就存放在这里。
- 删除项目根目录下的
- 手动清理虚拟环境残留(可选,确保彻底)
- 直接删除虚拟环境中残留的旧文件:
rm -rf myproject/env/lib/python3.9/site-packages/myproject/views/stable_default.py rm -rf myproject/env/lib/python3.9/site-packages/myproject/views/__pycache__/stable_default.cpython-39.pyc
- 直接删除虚拟环境中残留的旧文件:
- 重新安装开发模式
myproject/env/bin/pip install -e .
二、长期控制构建时的文件包含/排除
Pyramid项目基于setuptools构建,你可以通过以下几种方式精准控制哪些文件被包含进构建产物:
方式1:修改setup.py配置
使用find_packages()的exclude参数直接排除目标文件或模块:
from setuptools import setup, find_packages setup( name="myproject", # 其他配置版本、依赖等... packages=find_packages(exclude=[ "myproject.views.stable_default", "myproject.views.stable_default.*" ]), )
方式2:使用MANIFEST.in文件
在项目根目录创建MANIFEST.in文件,添加排除规则:
# 排除指定视图文件 exclude myproject/views/stable_default.py # 可选:排除所有__pycache__目录 recursive-exclude */__pycache__ *
这个文件会控制sdist打包和开发模式下的文件选择逻辑。
方式3:使用pyproject.toml(推荐现代方式)
如果项目使用pyproject.toml管理构建配置,添加以下内容:
[tool.setuptools.packages.find] where = ["myproject"] exclude = ["*.views.stable_default"] # 可选:排除缓存文件 [tool.setuptools] exclude-package-data = { "myproject.views" = ["__pycache__/*"] }
三、临时测试的更优实践
如果只是临时测试视图的新版本,建议用Git分支管理替代文件重命名:
- 创建测试分支:
git checkout -b test-new-view - 在分支中修改
default.py进行测试 - 测试完成后切回主分支:
git checkout main,无需手动清理文件,更安全高效
内容的提问来源于stack exchange,提问作者Tim D
相关产品推荐
相关产品推荐

