![ImportError:没有名为 svn.core 的模块 Python Traceback](https://linux22.com/image/751072/ImportError%EF%BC%9A%E6%B2%A1%E6%9C%89%E5%90%8D%E4%B8%BA%20svn.core%20%E7%9A%84%E6%A8%A1%E5%9D%97%20Python%20Traceback.png)
我正在我的一个环境中使用 RHEL 8 Apache 2.4 Subversion 1.10.6 Python 2.7 Viewvc 1.2.1 设置 Subversion 服务器
Apache 和 Subversion 安装已成功完成。此外,我正在尝试将 WebSVN 用作 Viewvc。
ViewVC 已成功安装并与 Python 集成。浏览 viewvc.cgi 页面时,我能够看到该页面。
当我为 svnrepositories 配置 viewvc 时,我收到错误 ImportError: No module named svn.core Python Traceback
我已经安装了 python svn 模块 subversion-python。但问题仍然存在。
任何帮助将不胜感激。
答案1
由于 RedHat 不提供 ViewVC Subversion 支持所需的 Subversion SWIG Python 绑定包[1],因此您需要第三方包[2],例如 Collabnet 或 WANdisco,或者从源代码构建它。
答案2
我不确定你是否能解决这个问题。我接到了类似的任务,将我们的 subversion 服务器(目前托管在 Ubuntu LTS 机器上)移动到 Centos 8 服务器。这是我们的遗留服务之一。然而,和你一样,我就是无法做到这一点。简而言之,我放弃了这个,并告诉用户他们必须转移到 git。
以下是我为尝试使其工作所做的工作,供那些可能找到这篇文章的人参考。第一个问题当然是 viewvc 没有为 Centos (RHEL) 8 打包,包括在 EPEL 中。所以,我去了 github 源https://github.com/viewvc/viewvc/并下载了最新版本(当时是 1.2.1)。我提取、阅读 INSTALL 并启动。我应用了 ./viewvc-install 脚本,该脚本似乎可以正常工作,没有错误。我在查看 viewvc.conf 后用我们的设置更新了它,并在 apache 中安装了配置文件。这一切似乎都有效,我可以执行基本的 viewvc。但是,像您一样,当我尝试查看 subversion 存储库时,我发现 ImportError:没有名为 svn.core 的模块。发布分支 1.2 需要 python2,因此我通过 dnf 安装了它。我阅读了 INSTALL 文件中的建议并尝试导入 svn.core。但是,核心 centos 存储库、epel 或 pypi 中似乎没有针对这些绑定(似乎是 SWIG 绑定)的打包。当我通过 pip2 svn 安装并能够导入 svn 而不是 svn.core 时,我受到了鼓舞。这似乎不是 viewvc 正在寻找的 svn 包。当我找到这个页面时,我似乎确认了我真正需要的东西就在 Subversion 项目中:https://cwiki.apache.org/confluence/display/SVN/Subversion%27s+Python+3+Support+Status它列出了 subversion 中的每个 python 文件,并确认有一个 core.py (subversion/bindings/swig/python/svn/core.py)。我不确定为什么没有打包它,也不知道在哪里可以找到并安装它。我真的不想尝试获取 subversion 源代码并尝试自己分发它,这将是第二个包(除了 viewvc),然后我需要定期检查安全问题并手动升级。(这就是包管理器的用途!)
然而,在看到关于python3支持状态的页面后,我决定再次查看viewvc,看看它是否支持python3。我发现问题138(https://github.com/viewvc/viewvc/issues/138),结果它被关闭了!我以为我现在很幸运。截至本文发布之日,主分支似乎支持 python3 (viewvc),并且即将发布 1.3 版本。这似乎令人鼓舞。我下载了 master 并安装了它。但是,我很快意识到 subversion 需要达到 1.14 才能支持 python3(在撰写本文时仍未发布,但为 rc2)。无论如何,我判断 RHEL 几乎不可能在 RHEL 8 / Centos 8 生命周期内将 subversion 重新定为 1.14,这又意味着在服务器的生命周期内需要进行更多手动更新。
考虑到所有这些,我放弃了 subversion 存储库。那里有一个非常好的 svn2git 程序。对于最小的 Web 界面,git-web 很容易启动和运行,大致相当于 viewvc。它也是一个受支持的软件包(dnf install git-web)。如果您想要一个稍微漂亮一点的界面,GOGS(gogs.io)似乎不错,并且不需要安装外部数据库(它只需使用 sqlite)。但是,它似乎没有为 RHEL / Centos / EPEL 打包。除非我们需要更漂亮的界面,否则我会尝试 git-web。
答案3
看来 RHEL 8 最终将支持 SVN 1.14: https://bugzilla.redhat.com/show_bug.cgi?id=1844947
Koji 还展示了支持这一点的构建尝试: https://koji.fedoraproject.org/koji/packageinfo?packageID=752