2015-01-06 55 views
-1

當按照安裝說明here,是什麼,具體而言,就是在<your_app_directory>當pip安裝GoogleAppEngineCloudStorageClient時,具體是什麼<your_app_directory>?

pip install GoogleAppEngineCloudStorageClient -t <your_app_directory/lib> 

我曾嘗試:那我在GAE上運行

  1. /Applications文件夾
  2. 主文件夾託管我.py文件
  3. 相同(2)下的子文件夾VENV

但是我得到:

ImportError:沒有模塊名爲cloudstorage

,如果我嘗試:

import cloudstorage as gcd 

和:

導入錯誤:沒有名爲lib.cloudstorage

,如果我嘗試模塊:

import lib.cloudstorage as gcd 

與上述所有。

E.g.

>>> os.listdir("/applications/lib") 
['cloudstorage', 'GoogleAppEngineCloudStorageClient-1.9.15.0-py2.7.egg-info'] 
>>> import lib.cloudstorage 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> ImportError: No module named lib.cloudstorage 
>>> 
+0

它應該在你的/ Applications/lib中。 – Patrice

+0

@Patrice:似乎並非如此,因爲我得到這個:>>> os.listdir(「/ applications/lib」) ['cloudstorage','GoogleAppEngineCloudStorageClient-1.9.15.0-py2.7 .egg-信息'] >>>進口lib.cloudstorage 回溯(最近通話最後一個): 文件 「」,1號線,在 導入錯誤:沒有模塊名爲lib.cloudstorage >>> – zanzu

+1

@zanzu 'lib'本身不是一個包(它沒有'__init __。py'文件),因此你不能'導入lib.cloudstorage'。正如你發現你可以將整個文件夾添加到你的python路徑(它告訴python在哪裏搜索模塊和包),然後執行'import cloudstorage'。 – l4mpi

回答

0

我不知道這是到底是什麼做的,但我這樣做後不再得到導入錯誤:

sys.path.append('/applications/lib') 
1

<your_app_directory>是路徑包含您app.yaml文件的文件夾。

您的YAML文件指定了一個腳本文件,其中包含您的GAE handlers。該腳本文件,YAML文件和依賴關係需要打包到upload的文件夾中。

我用這個文件夾結構:

  • 應用程序/
    • 的app.yaml Note: script attribute will point to src.main.application
    • SRC/
      • __init__.py
      • main.py Contains a variable called application
    • mypackage的/
      • __init__.py
      • supermodule.py
      • othermodule。PY
    • 的lib/
      • 雲端儲存/
      • otherlib/
      • 等/

爲了幫助蟒蛇發現在子文件夾模塊,如用法import cloudstorage as gcs,以下代碼在你的0中很有用文件:

import os 
import sys 
#sys.path.append(os.path.join(os.path.dirname(__file__), "lib")) 
sys.path.append(os.path.join(os.path.join(os.path.dirname(__file__), ".."), "lib")) # relative to main.py