【问题标题】:Publishing MVC app that uses python script发布使用 python 脚本的 MVC 应用程序
【发布时间】:2017-01-13 00:56:24
【问题描述】:

我目前有 MVC 项目,它通过 Process (new processStartinfo("/path/to/python.exe", "/path/to/script.py") 调用 python 脚本。这在 Visual Studio 中运行良好。 当我在 azure 上发布它时,它将如何调用 python.exe? (我可能没有准确地构建这个问题,因为这是我第一个发布的网络并且对发布没有完全了解)

附:我确实尝试使用 IronPython,但由于我的脚本使用 NLTK,我遇到了一堆问题,所以使用 pip 安装 python&nltk 更容易,然后通过命令行调用 python.exe,该命令行采用 /path/to/script.py 的参数.任何输入表示赞赏。

编辑:我的 homeController 启动一个进程,将 path_of_python、path_of_script 传递到命令行,重定向输出并处理它返回的数据(从输出)。

【问题讨论】:

  • 这真的取决于你如何在 Azure 中执行此操作。它是 Azure 网站吗?虚拟机?可以使用 Azure Functions 吗? Python 代码是否需要在与网站完全相同的机器上运行?
  • 我在考虑 Azure 网站,但同事告诉我,他认为这不可能,但由于很少有 python 经验,所以不能完全确定。我编辑了我的问题以获取更多信息。我对发布方式没有任何偏好,只要它有效。
  • 据我所知,您无法在 Azure 网站中运行单独的进程。但是没有什么能阻止您使用 Azure Functions(Google it)或在其他地方设置 Python 应用程序。

标签: c# python asp.net asp.net-mvc azure


【解决方案1】:

似乎可以在 Azure 网站上使用带有 C# 中的 NLTK 包的 Python 脚本。

我尝试通过以下解决方法来实现它,并且效果很好。

第 1 步。用于在 Azure WebApp 上安装 Python 和 NLTK

  1. 通过 url https://<your webapp name>.scm.azurewebsites.net 访问您的 web 应用的 Kudu 工具。
  2. 安装站点扩展Python 2.7.12 x86,如果使用32位版本的Azure WebApp为例,它将安装在路径D:\home
  3. 切换到Kudu CMD,你可以看到这里已经安装了一个新的Python运行时,你有权对其进行任何操作。
  4. 命令cd Python27touch get-pip.py,通过Edit按钮将urlhttps://bootstrap.pypa.io/get-pip.py的内容复制到get-pip.py,然后运行python get-pip.py安装pip工具。
  5. 命令Scripts\pip install nltk 安装nltk 包。
  6. 下载nltk数据,命令python -m nltk.downloader -d D:\home\Python27\nltk_data all如下,命令完成前请不要关闭当前浏览器窗口或切换其他url 您可以在另一个浏览器窗口中通过 url https://<your webapp name>.scm.azurewebsites.net/ProcessExplorer/ 查看正在进行的下载任务,如下所示。 6.1 或者您可以在本地下载nltk数据上传到Azure WebApp。

第 2 步。使用 NLTK 包测试 Python 脚本

  1. wwwroot路径下命令touch test.py,并编辑以下内容。

    import nltk
    sentence = """At eight o'clock on Thursday morning
    ... Arthur didn't feel very good."""
    tokens = nltk.word_tokenize(sentence)
    print tokens
    
  2. 控制台显示结果如下,它可以工作。

步骤 3. 在 C# 中通过 Process 调用 python 脚本

仅在您的 C# 代码中使用 python 运行时和脚本 D:\home\Python27\pythonD:\home\site\wwwroot\test.python 的绝对路径,而不是它们。

请尝试并反馈您的结果。有任何问题,请随时告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多