美文网首页
C#调用Python

C#调用Python

作者: 过桥 | 来源:发表于2018-12-03 15:51 被阅读12次

    实现效果

    通过C#调用Python写好的方法

    方法一、通过安装 IronPython 实现

    Q:找不到py文件
    A:检查最后执行文件路径,可能需要将文件属性中“复制到输出目录”设置为“始终复制”

    Qpy文件方法执行异常
    A:检查py文件可否单独执行,如果可以执行,检查执行环境是否为3.x,可能需要py代码降级;如果不可执行,检查是否引用第三方包,第三方是否非全局安装

    Tip:目前 IronPython 支持Python模拟运行环境为2.x

    方法二、将py文件通过flask发布成接口

    Q:跨域
    A:设置跨域访问装饰器

    Q:使用sublime,启动python服务,修改代码后再次启动python服务,调用还是初始未修改的服务
    A:简单粗暴方式,直接切换端口;进阶方式,检查任务管理器中python对应进程,关闭正在运行的进程后再启动

    方法二、样例代码

    # -*- coding:utf-8 -*-
    from functools import wraps
    from flask import Flask, url_for, request, make_response
    import sketch_n_draw
    
    
    app = Flask(__name__)
    
    #跨域
    def allow_cross_domain(fun):
        @wraps(fun)
        def wrapper_fun(*args, **kwargs):
            rst = make_response(fun(*args, **kwargs))
            rst.headers['Access-Control-Allow-Origin'] = '*'
            rst.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE'
            allow_headers = "Referer,Accept,Origin,User-Agent"
            rst.headers['Access-Control-Allow-Headers'] = allow_headers
            return rst
        return wrapper_fun
    
    @app.route('/')
    @allow_cross_domain
    def api_root():
        return 'Welcome sketch_n_draw Root!'
    
    @app.route('/api',methods = ['POST'])
    @allow_cross_domain
    def api():
        if request.method == "POST":
            folderName = request.form.get('folderName')
            fileName = request.form.get('fileName')
            return sketch_n_draw.start(folderName,fileName)
    
    
    if __name__ == '__main__':
        app.run(host='172.16.9.26',port=8080)
    

    相关文章

      网友评论

          本文标题:C#调用Python

          本文链接:https://www.haomeiwen.com/subject/ismycqtx.html