2013-07-23 45 views
1

我需要一個名爲qrcode的非標準App Engine包。這是一個純粹的Python庫,只依賴於App Engine支持的PIL。Python應用引擎非標準包導入

我的文件夾結構是:

app 
|--- handlers/ 
|------ my_handler.py 
|--- util/ 
|------ __init__.py 
|------ qrcode/ 
|--------- __init__.py 
|--------- qrcode/ 
|------------ __init__.py 
|------------ other lib files 
|--- index.py 

index.py我映射到my_handler.pymy_handler.py我打電話from util.qrcode import qrcode內部處理類get方法之一。問題是我在__init__.py文件上得到了ImportError: No module named qrcode.main

__init__.py:

from qrcode.main import QRCode, make 
from qrcode.constants import * 
from qrcode import image 

qrcode.main是一個.py文件即是qrcode包內(看到整個 包,檢查庫鏈接here

我已經看過,我不能發現什麼是錯的。我會很感激你的幫助。謝謝!

其他問題我搜索:
AppEngine server cannot import atom module
Import custom package in python google app engine
Importing nested modules in Python

+0

您是否已將'util'添加到'sys.path'? –

+0

實際上沒有必要,因爲我可以訪問文件夾(它們映射在app.yaml中)。我想我找到了答案。現在發佈。無論如何,謝謝= D – marcelocra

回答

0

Python路徑將包括目錄中的app.yaml生活。如果這是你app模塊的居住地,那麼你應該使用絕對導入:

# in index.py 
from app.handlers import my_handler 

# in my_handler.py 
from app.util.qrcode import qrcode 
+0

其實我的'app.yaml'也住在'app'裏面。我相信主要的問題是由於某些原因,我無法理解'qrcode'內的'main.py'文件沒有找到。 – marcelocra

0

出於某種原因(我不知道)包不知道自己的名字。爲了使它工作,我必須刪除包文件上的所有對qrcode的引用。我的新__init__.py進口變成了:

from main import QRCode, make 
from constants import * 
import image 

所需的所有.py文件進口要改變,我不得不包括在app.yamlPIL(我忘了,過,但從來沒有得到足夠遠,面對這樣的錯誤= P) 。

現在我仍然無法生成圖像,但我沒有更多的導入錯誤,所以我猜這個問題是回答。謝謝!