Python与Zope:模块在Python中可导入但在Zope中不可用

1 投票
2 回答
772 浏览
提问于 2025-04-16 01:39

我安装了一个叫做Image的模块,链接是http://www.pythonware.com/products/pil/。然后我在Python解释器中尝试导入它,结果成功了:

>>> import Image
>>> 

但是当我在Zope的DTML页面中尝试导入这个模块时:

DTML页面的样子是:

<dtml-var import_image>

这个页面调用了这个脚本:

def import_image(self):
    import Image
    im = Image.open("/home/rv/Desktop/blah.jpg")
    return im

然后我就遇到了这个错误:

“ImportError: No module named Image”,我明明在Python解释器中可以导入它,为什么在这里却找不到这个模块呢?


补充说明

这个Python脚本在Zope的扩展文件夹里。

2 个回答

1

在Zope的Python脚本中,你不能随便导入任何模块。Zope有一些安全限制。在你的情况下,你需要在 %zope-instance%/Extensions 目录下创建一个外部方法。

或者 可能是你的Zope实例找不到这个库,因为它在另一个Python环境中运行。你应该检查一下 %zope-instance%/bin/zopectl 中的所有参数是否正确。

2

试试:

import PIL.Image

而不是:

import Image

Zope有一个图像模块,你可能会遇到命名空间冲突。

撰写回答