python - 使用 exec 时,Reposurgeon 给我一个语法错误,为什么?

标签 python reposurgeon

使用reposurgeon并试图扩展其功能,我面临着:

reposurgeon: invalid syntax in extension function

它会转换为从 RepoSurgeon.do_exec() 中的 execfile() 调用引发的 SyntaxError 扩展。是什么赋予了?我尝试 exec 的代码非常简单:

print "Hello world"

我还使用了 Python CLI 和 execfile,没有任何提示吗?

使用版本:reposurgeon 3.10

最佳答案

这个问题花了我一段时间才弄清楚,这就是我将其发布在这里的原因。

关键确实在于我们试图“获取”的一行代码。虽然这是完全有效的 Python 2.x 代码,但 reposurgeon 使用 Python 3.x 中的 print 函数,执行以下操作:

from __future__ import print_function

这会导致 print 要求使用括号,因为它使 print 成为函数而不是语句。

显然,我们是在 reposurgeon 的上下文中运行扩展代码,这意味着我们依赖于它定义的规则。

参见this document .

因此以下内容可以正常工作:

print("Hello world")

关于python - 使用 exec 时,Reposurgeon 给我一个语法错误,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25146005/

相关文章:

python - 寻找更多的pythonic方法

git - 在不创建 .gitignore 文件的情况下使用 reposurgeon 将 SVN 存储库转换为 git?

git - 如何将一组 mercurial 存储库转换为 git 存储库?

git - 使用快速导入/导出流的 SVN 到 Git

python - 没有名为 Flask 的模块,带有 waitress-serve 和 virtualenv(App Engine flex)

python - 如何制作一个简单的 Python 分支,如果找到需求,它会停止?

python - 如何为受身份验证保护的 REST API 编写 Django 单元测试?

python - 如何使用 get_object_or_404 排除结果?