What, specifically, is the when pip install

2019-09-19 13:45发布

问题:

When following the install instructions here, what, specifically, is the <your_app_directory> in:

pip install GoogleAppEngineCloudStorageClient -t <your_app_directory/lib>

?

I have tried:

  1. /Applications folder
  2. the home folder hosting my .py files that I'm running on GAE
  3. same as (2) under the venv subfolder

However I'm getting:

ImportError: No module named cloudstorage

if I try:

import cloudstorage as gcd

and:

ImportError: No module named lib.cloudstorage

if I try:

import lib.cloudstorage as gcd

with all the above.

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
>>>

回答1:

<your_app_directory> is the path to the folder containing your app.yaml file.

Your YAML file specifies a script file containing your GAE handlers. This script file, YAML file, and dependencies need to be packaged into a folder for upload.

I use this folder structure:

  • app/
    • 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/
      • cloudstorage/
      • otherlib/
      • etc/

To help python find modules in sub-folders, like the usage import cloudstorage as gcs, the following code is useful in your main.py file:

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


回答2:

I am not sure if this is what did it at the end, but I no longer get the import error after doing:

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