我的問題是以下錯誤:如何使用Python組織庫+谷歌應用程序引擎+ oauthlib
ImportError: No module named oauthlib.oauth2
所以,因爲它似乎我不能在GAE開發environemnt導入oauthlib
我有以下項目結構
app_root/
app/ - source files of the app
libs/ - third party libraries
gdata/ - google data library
atom/ - requires by google data
oauthlib/ - [oauthlib][1]
test/ - unit tests
app.yaml - gae config
main.py - main script
這裏是app.yaml中的源
application: app
version: v1
runtime: python27
api_version: 1
threadsafe: yes
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: .*
script: main.app
libraries:
- name: webapp2
version: "2.5.2"
在main.py我有下面的代碼來拿起「庫」文件夾:
sys.path.append(os.path.join(os.path.dirname(__file__), 'libs'))
最後我有以下我的模塊中輸入:
from oauthlib.oauth2 import RequestValidator, WebApplicationServer
,當我開始結果從pycharm應用程序,我得到這個錯誤:
from oauthlib.oauth2 import RequestValidator, WebApplicationServer
ImportError: No module named oauthlib.oauth2
我真的不明白爲什麼會發生,在我的IDE它做不要強調導入是紅色的,所以它可以看到引用是好的。
我有點新來python和所有這種方法與第三方庫真的讓我困惑。事實上,有很多關於這方面的問題,比如是否有更好的方式來管理gae的第三方庫。
但讓我們專注於主要問題。爲什麼當引用應該罰款時會拋出ImportError?
更新#1 如果我讓庫作爲一個Python包,所以有初始化的.py 它打破庫的代碼內進口,即文件oauthlib /的oauth2/rfc6749 /客戶/ base.py包含:
from oauthlib.oauth2.rfc6749 import tokens
from oauthlib.oauth2.rfc6749.parameters import prepare_token_request
from oauthlib.oauth2.rfc6749.errors import TokenExpiredError
from oauthlib.oauth2.rfc6749.errors import InsecureTransportError
from oauthlib.oauth2.rfc6749.utils import is_secure_transport
但當前模塊路徑包括libs.prefix
注意到main。Py(我擴展系統路徑)位於lib文件夾相同的水平,所以我不尋找lib文件夾內的應用程序文件夾,至於你的第一個建議,我更新了我的問題 – endryha