You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pyramid项目构建残留已删除视图文件问题咨询

解决Pyramid项目构建时残留旧视图文件的问题及文件控制方案

一、彻底清除当前残留问题

  1. 卸载项目并清理缓存
    • 先卸载已安装的项目:
      myproject/env/bin/pip uninstall myproject -y
      
    • 清理pip缓存,避免残留安装包:
      myproject/env/bin/pip cache purge
      
  2. 删除项目本地的构建元数据
    • 删除项目根目录下的.egg-info文件夹(比如myproject/myproject.egg-info),这个文件夹记录了构建时的文件列表,旧文件的引用就存放在这里。
  3. 手动清理虚拟环境残留(可选,确保彻底)
    • 直接删除虚拟环境中残留的旧文件:
      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
      
  4. 重新安装开发模式
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:32:42