3

当我在 Zope 文件系统目录视图文件上运行 pyflakes 时(在 plone 中发现了很多),它总是返回很多警告,表明我的参数和特殊值(如“上下文”)未定义,如果它是真正的 python,这将是真的脚本,但对于文件系统目录视图脚本,它们由顶部的魔术注释定义,例如:

## Python Script "Name"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=foo, bar, baz
##
from AccessControl import getSecurityManager
user = getSecurityManager().getUser()

from Products.PythonScripts.standard import html_quote

request = container.REQUEST
RESPONSE = request.RESPONSE

return foo + bar + baz

除了 Zope 之外,这种蟒蛇在任何地方都使用过吗?

是它,还是可以被 pyflakes、pylint 或类似工具支持?

4

2 回答 2

2

我刚刚尝试的一种可能的方法是预处理 zope fspython 脚本,使其有效。我已经使用了一些 sed 调用(如下):

#!/bin/bash
sed "s/\(^[^#]\)/  \1/" $1 | \
sed "s/^##bind [a-z]*=\([a-z][a-z]*\)$/import \1/" | \
sed "s/^##parameters=\(.*\)/def foo(\1):/" | pyflakes

最好用一个包裹 pyflakes 并且不会改变普通 python 脚本的 python 脚本来替换它。

于 2009-06-25T00:02:24.257 回答
1

不,除了 Zope 之外,这种蟒蛇在任何地方都没有使用,实际上现在几乎只在 Plone 中使用。Plone 社区正在远离它,因为它有很多缺点,这就是其中之一。

Pyflakes 不是非常可配置的,至少不是以记录的方式。Pylint 可以配置为跳过一些错误消息,但您需要跳过的将是最有用的,因此这也可能没有帮助。

所以简短的回答是:不,你不能对它们进行语法检查。另一方面,您不需要重新启动服务器来运行它们,因此语法检查不会为您节省那么多时间,它会在 Zope 世界中使用其他 Python 代码。

于 2009-06-24T15:13:49.863 回答