2015-02-11 137 views
1

这是我第一次尝试使用jython,所以在这里!在jython jar中导入烧瓶模块

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

我跟着jar method tutorial here,我有我的应用程序组件都设置在罐子里面。然而,当我尝试使用该命令执行罐内我的脚本:

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 

我假设我需要以某种方式打包我的模块在我的代码的其余部分,但我不知道如何。和建议,将不胜感激!

回答

1

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

$ jar uf folder/myapp.jar flask 

我目前使用Ant,这看起来是这样的:

像这样的东西应该得到flask到您的* .jar文件的根目录,假设flask是路径到您的flask模块这一点,如果你正在做的是加入flask

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

我是能够增加我需要的jar的模块,但我不认为我的应用程序知道如何寻找他们在那里。有需要更新的路径吗? – knoll 2015-02-12 15:27:14

+0

不,任何添加到jar根目录的内容都应该可以通过jar内的程序导入,而不必触摸'sys.path'。 – 2015-02-12 15:45:59

+0

几乎在那里。我现在从我的瓶子导入中得到一个语法错误。 '拿起JAVA_TOOL_OPTIONS:-Dfile.encoding = UTF-8 文件 “app.py”,第25行,在 进口烧瓶 文件 “__pyclasspath __ /烧瓶/ __ init__.py”,第17行,在 文件“__pyclasspath__ /werkzeug/__init__.py”,线路154,在 文件 “__pyclasspath __/WERKZEUG/exceptions.py”,第67行,在 文件 “__pyclasspath __/WERKZEUG/_internal.py”,第26个 _cookie_params =集(( b'expires',b'path',b'comment', ^ SyntaxError:没有可行的替代输入''expires''' – knoll 2015-02-12 17:44:50