如何修复出现PYTHON_EGG_CACHE错误的Trac安装?

1 投票
5 回答
2053 浏览
提问于 2025-04-11 09:33

我们一直在用Trac来跟踪任务和缺陷,之前一切都挺顺利的,但今天早上它突然出现了500错误。在查看Apache的错误日志时,我发现了一段错误信息,最后显示的是:

PythonHandler trac.web.modpython_frontend:
  ExtractionError: Can't extract file(s) to egg cache

The following error occurred while trying to extract file(s) to the Python egg
cache:

  [Errno 13] Permission denied: '/.python-eggs'

The Python egg cache directory is currently set to:

  /.python-eggs

Perhaps your account does not have write access to this directory?  You can
change the cache directory by setting the PYTHON_EGG_CACHE environment
variable to point to an accessible directory

于是我把PYTHON_EGG_CACHE设置成了/srv/trac/plugin-cache。我重启了Apache,但还是出现同样的错误(它仍然显示“当前的egg缓存目录设置为:\n\n /.python_eggs。”)

我接下来该怎么做?最简单的办法是重新安装Trac吗?如果我选择这个方法,我需要采取哪些步骤来确保不会丢失现有的数据呢?

5 个回答

1

我曾经和 PYTHON_EGG_CACHE 斗争过很多次,但始终没搞清楚怎么正确设置它——无论是apache的环境变量,还是httpd.conf里的设置,都没用。最后我干脆把所有的python包手动解压了,反正也就两个或三个——问题就解决了。我一直搞不懂,为什么人们要把几千字节大小的文件压缩成zip文件呢……

1

我在今年早些时候从Trac 10.4升级到0.11时也遇到了同样的问题。这个问题突然出现,肯定是有什么地方发生了变化——可能是Python或Apache的更新?

我不记得我尝试过多少种解决方法,但最后我不得不使用SetEnv PYTHON_EGG_CACHE /.python-eggs,并且创建了一个权限为777的/.python-eggs文件夹。虽然这可能不是最好的解决办法,但它解决了我的问题。

我从来没有深入调查过根本原因。正如agnul所说,这个问题可能在后来的Trac版本中已经修复了。

5

根据他们的错误追踪系统,这个问题应该在0.11版本中修复了。

如果还没有修复,你可以试着把环境变量传给apache,因为在配置文件里使用SetEnv是没用的。你可以在启动apache的脚本里加上类似下面的内容:

export PYTHON_EGG_CACHE=/tmp/python_eggs

这样应该就能解决问题了。

撰写回答