澳门新葡萄京官网首页 4

澳门新葡萄京官网首页python pip 安装时候出现lxml出错

澳门新葡萄京官网首页 1

最近在学习用python
开发webservice,费了半天时间把环境搭好,记录下具体过程,以备后用。

1.安装web.py地址:
(http://webpy.org/install.zh-cn#install)

2.安装lxml python:
首先,安装easy_install工具,地址:1.(http://peak.telecommunity.com/dist/ez_setup.py)2.(https://pypi.python.org/pypi/setuptools#downloads2.())
把C:…..python2Scripts加入系统环境变量,cmd执行:easy_install
virtualenv
然后,下载lxml-2.3.py2.7.win32.egg,地址:(http://pypi.python.org/pypi/lxml/2.3/),cmd
执行 easy_install lxml-2.3.py2.7.win32.egg(要在egg文件所在目录下)

3.安装libxml2:
下载libxml2-python-2.7.7.win32-py2.7.exe
,地址:(http://xmlsoft.org/downloads.html),找到最新的版本,或者:git
clone
git://git.gnome.org/libxml2

4.安装libxslt:
地址:http://xmlsoft.org/downloads.html

出现lxml相关错误,pip install lxml 安装也是一样出错。

首先系统上要有python。其次要用python进行webservice开发,还需要一些库:

只能安装exe : https://pypi.python.org/pypi/lxml/3.4.2

1、lxml :
  命令行下 easy_install lxml 就能安装,如果不能正常安装下载lxml安装
:https://pypi.python.org/pypi/lxml/3.2.2,下载后,打开解压的文件夹,在当前文件夹中打开命令行工具,同时按中ctrl+shift键,点击“在此处打开命令行窗口”
,在命令行窗口输入python setup.py install 回车即可。

根据不同系统来安装

如下图:

文章由爱资料原创本文地址:

澳门新葡萄京官网首页 2

澳门新葡萄京官网首页 3

  安装完成,如下图

  澳门新葡萄京官网首页 4

 

 

2、pytz :
   命令行下  easy_install pytz 就能安装,如果不能正常安装下载pytz安装
:https://pypi.python.org/pypi/pytz/

3、zope:

  命令行下  easy_install zope 就能安装,如果不能正常安装下载zope安装
:https://pypi.python.org/pypi/zope.interface#download

4、pyOpenSSL

 命令行下
 easy_install pyOpenSSL 就能安装,如果不能正常安装下载pyOpenSSL安装
:https://pypi.python.org/pypi/pyOpenSSL

5、twisted:

  命令行下  easy_install
twisted 就能安装,如果不能正常安装下载twisted安装  
  https://pypi.python.org/pypi/Twisted/ or https://pypi.python.org/simple/twisted/

6、soaplib:

  命令行下  easy_install
soaplib 就能安装,如果不能正常安装下载soaplib安装 :  
 https://github.com/soaplib/soaplib

7、suds:

  命令行下  easy_install suds 就能安装,如果不能正常安装下载suds安装 :
 
 https://pypi.python.org/pypi/suds-jurko/0.6

由于上面的安装包存在依赖关系最好安装顺序下载和安装。安装完成后就可以进行webservice的开发和调用了。

直接贴代码:server.py

  

# coding: utf-8
import soaplib
from soaplib.core.util.wsgi_wrapper import run_twisted #发布服务
from soaplib.core.server import wsgi
from soaplib.core.service import DefinitionBase  #所有服务类必须继承该类
from soaplib.core.service import soap  #声明注解
from soaplib.core.model.clazz import Array #声明要使用的类型
from soaplib.core.model.clazz import ClassModel  #若服务返回类,该返回类必须是该类的子类
from soaplib.core.model.primitive import Integer,String

class C_ProbeCdrModel(ClassModel):
   __namespace__ = "C_ProbeCdrModel"
   Name=String
   Id=Integer
class HelloWorldService(DefinitionBase):  #this is a web service
   @soap(String,_returns=String)    #声明一个服务,标识方法的参数以及返回值
   def say_hello(self,name):
      return 'hello %s!'%name
   @soap(_returns=Array(String))
   def GetCdrArray(self):
      L_Result=["1","2","3"]
      return L_Result
   @soap(_returns=C_ProbeCdrModel)
   def GetCdr(self):     #返回的是一个类,该类必须是ClassModel的子类,该类已经在上面定义
      L_Model=C_ProbeCdrModel()
      L_Model.Name=L_Model.Name
      L_Model.Id=L_Model.Id
      return L_Model
if __name__=='_main__':
   soap_app=soaplib.core.Application([HelloWorldService], 'tns')
   wsgi_app=wsgi.Application(soap_app)
   print 'listening on 127.0.0.1:7789'
   print 'wsdl is at: http://127.0.0.1:7789/SOAP/?wsdl'
   run_twisted( ( (wsgi_app, "SOAP"),), 7789)
if __name__=='__main__':  #发布服务
   try:
      from wsgiref.simple_server import make_server
      soap_application = soaplib.core.Application([HelloWorldService], 'tns')
      wsgi_application = wsgi.Application(soap_application)
      server = make_server('localhost', 7789, wsgi_application)
      server.serve_forever()
   except ImportError:
      print 'error'

python server.py可以直接运行服务了。运行服务后打开浏览器,地址栏上键入: http://localhost:7789/SOAP/?wsdl就能看到描述服务的xml文档了。

服务发布好后,就可以调用了,
调用过程要用到suds库,上面已经提到。
客户端调用代码:

# coding: utf-8

from suds.client import Client

test=Client('http://localhost:7789/SOAP/?wsdl')

print test.service.say_hello(' world')
这样就调用服务中say_hello这个服务方法了。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注