2015-02-11 94 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