在Windows上使用Python 2.6中的Ladon

0 投票
2 回答
1035 浏览
提问于 2025-04-16 21:11

我一直在尝试把一些Python脚本做成一个网络服务,但似乎一直没什么进展。我对网络服务还很陌生,但真的想搞明白这个事情。我用的是Windows 7,使用的是IIS7。这个服务还需要是SOAP格式的。

我看过很多关于Python和SOAP的帖子,试过几乎所有不同的库,但大多数都让我觉得很难懂(尤其是ZSI/SOAPpy)。Ladon库看起来是最适合我需要的(而且最简单),但是那个教程http://www.youtube.com/watch?v=D_JYjEBedk4&feature=feedlik在5:10的时候讲到服务器的部分我就听不懂了。当我在命令行输入ladon2.6ctl时,Windows似乎有点困惑。我猜是因为他在Linux上用Apache,而我在Windows上。

所以,如果有任何关于如何在微软的环境下运行Python网络服务的建议,我会非常感激,因为我已经花了太多时间在这上面了。

值得一提的是,我的脚本之所以这么具体(看起来也有点奇怪),是因为它们涉及到很多使用ESRI的“arcpy”进行的地理处理。

--补充--

Traceback on localhost:8080/TestService:
Traceback (most recent call last):
  <br>File "c:\Python26\ArcGIS10.0\lib\site-packages\ladon-0.5.1-py2.6.egg\ladon\server\wsgi_application.py", line 229, in __call__
    exec("import %s" % ','.join(self.service_list))
  File "<string>", line 1, in <module>
  File "c:\Users\r\workspace\ladon\src\testspace.py", line 3, in <module>
    class TestService2(object):
  File "c:\Users\r\workspace\ladon\src\testspace.py", line 4, in TestService2
    @ladonize(int,int,rtype=int)
  File "c:\Python26\ArcGIS10.0\lib\site-packages\ladon-0.5.1-py2.6.egg\ladon\ladonizer\decorator.py", line 87, in decorator
    ladon_method_info = global_service_collection().add_service_method(f,*def_args,**def_kw)
  File "c:\Python26\ArcGIS10.0\lib\site-packages\ladon-0.5.1-py2.6.egg\ladon\ladonizer\collection.py", line 119, in add_service_method
    sinfo = self.source_info(src_fname)
  File "c:\Python26\ArcGIS10.0\lib\site-packages\ladon-0.5.1-py2.6.egg\ladon\ladonizer\collection.py", line 79, in source_info
    a = ast.parse(src)
  File "c:\Python26\ArcGIS10.0\lib\ast.py", line 37, in parse
    return compile(expr, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
     from ladon.ladonizer import ladonize

^
 SyntaxError: invalid syntax

示例代码:

from ladon.ladonizer import ladonize

class TestService2(object):
    @ladonize(int,int,rtype=int)
    def sum(self,a,b):
        '''add two numbers<br>
        param a: number 1
        param b: number 2
        rtype: sum of result
        '''
        return a+b

2 个回答

1

我得承认,我通常几乎所有事情都用Linux系统,已经有一段时间没在Windows上试过Ladon了。今天稍晚我会启动我的Windows系统,看看有没有什么问题。

你提到ladon2.6ctl会搞混。你有遇到什么错误信息吗?

0

为了方便其他有兴趣的人,这里总结一下解决方法:首先,删除这三个 ladon 模块中的 "syslog import":
在 ladon/interfaces/jsonwsp.py 的第 6 行
在 ladon/dispatcher/dispatcher.py 的第 7 行
在 ladon/server/wsgi_application.py 的第 37 行

接下来,你需要把换行符从 Windows 默认的 /r/n 改成 /n。在 Eclipse 中,点击窗口的菜单,选择窗口 -> 首选项 -> 常规,然后选择(不是下拉菜单)工作区标签。在右下角,选择 "其他" 作为新文本文件的行分隔符,并把它改成 Unix。

撰写回答