【问题标题】:Importing flask module in jython jar在 jython jar 中导入烧瓶模块
【发布时间】:2015-02-11 23:08:39
【问题描述】:

这是我第一次尝试使用 jython,所以开始吧!

我有一个使用 Flask 作为我的 Web 框架的 Python 小应用程序,我想将它打包到一个 jar 中。

我已经关注jar method tutorial here,并且我的应用程序组件都设置在 jar 中。但是,当我尝试使用此命令在 jar 中执行我的脚本时:

java -jar folder/myapp.jar myapp.py runserver

我遇到了典型的 Python 导入错误:

File "folder/myapp.py", line 24, in <module>
from flask import Flask, render_template, flash, redirect, request, session
ImportError: No module named flask

我假设我需要以某种方式将我的模块与我的其余代码一起打包到 jar 中,但我不知道如何做。我们将不胜感激!

【问题讨论】:

    标签: java python jar flask jython


    【解决方案1】:

    最简单的解决方案是将flask 模块添加到myapp.jar 的根目录中。您可以使用 JDK 附带的 jar 实用程序来执行此操作,或者使用 Ant 中的 &lt;jar&gt; 任务。我确信 Maven 有办法做同样的事情,但我不了解 Maven。

    假设flask 是您的flask 模块的路径,这样的东西应该将flask 放入*.jar 文件的根目录:

    $ jar uf folder/myapp.jar flask
    

    我目前正在使用 Ant,如果您正在做的只是添加 flask,那将看起来像这样:

    <target name="add-flask-module">
        <jar basedir="flask" destfile="folder/myapp.jar" update="true"/>
    </target>
    

    【讨论】:

    • 我能够将我需要的模块添加到 jar 中,但我认为我的应用程序不知道在其中查找它们。有需要更新的路径吗?
    • 不,您添加到 jar 根目录的任何内容都应该可以通过 jar 内的程序导入,而无需触摸 sys.path
    • 快到了。我现在从烧瓶导入中收到语法错误。 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 File "app.py", line 25, in &lt;module&gt; import flask File "__pyclasspath__/flask/__init__.py", line 17, in &lt;module&gt; File "__pyclasspath__/werkzeug/__init__.py", line 154, in &lt;module&gt; File "__pyclasspath__/werkzeug/exceptions.py", line 67, in &lt;module&gt; File "__pyclasspath__/werkzeug/_internal.py", line 26 _cookie_params = set((b'expires', b'path', b'comment', ^ SyntaxError: no viable alternative at input ''expires''
    • @solrrt,这确实是您提出的一个新问题,我们不应该在 cmets 中提出新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2012-07-26
    • 2020-06-25
    相关资源
    最近更新 更多