移动相应py时自动删除pyc文件(Mercurial)

2024-05-09 04:26:02 发布

您现在位置:Python中文网/ 问答频道 /正文

(我早在3个月前就预见到了这个问题,被告知要努力避免。昨天,我被它咬了一口,很难受,现在它花了我很多钱,我很想把它修好。)

如果我将一个Python源文件移动到另一个目录中,我需要记住告诉Mercurial它已经移动了(hg move)。

当我使用Mercurial将新软件部署到服务器时,它会小心地删除旧的Python文件并在新目录中创建它。

但是,Mercurial不知道pyc文件在同一个目录中,因此将其放在后面。同一目录中的其他模块优先使用旧pyc,而不是新python文件。

接下来发生的不是搞笑。

如何说服Mercurial在移动python文件时自动删除我的旧pyc文件?还有更好的做法吗?试图记住从所有Mercurial存储库中删除pyc文件是行不通的。


Tags: 模块文件目录move软件部署hgmercurial
3条回答

在服务器端使用update hook怎么样?把它放到存储库的.hg目录的hgrc文件中:

[hooks]
update = find . -name '*.pyc' | xargs rm

在服务器上更新时将删除所有.pyc文件。如果你担心重建所有.pyc文件的成本,你总是可以在钩子里稍微聪明一点,只删除不存在.py的.pyc文件,但这可能是过分了。

  1. 不要在存储库中存储.pyc文件。
  2. 自动执行。pyc delete with:find。-名称'*.pyc'-删除
  3. 在Python中开发use-B参数时。

你需要:

1)一个真正的部署基础设施,即使它只是一个shell脚本,它什么都做。从源代码管理克隆/签出更新的副本不是部署策略。

2)任何部署系统都应该彻底清理目录结构。我通常的偏好是,每次部署都会发生在一个名为date+timestamp的新目录上,并且会更新一个符号链接(名为“current”)以指向新目录。这将为您提供每台服务器上出现问题时的面包屑。

3)修复运行Python代码的任何东西。新的.py源文件应始终优先于缓存的.pyc文件。如果这不是你所看到的行为,那就是一个bug,你需要弄清楚它发生的原因。

相关问题 更多 >