Skip to main content
 首页 » 编程设计

python之无法在 GAE 的 python 中导入正确的模块

2025年05月04日10del

如何明确告诉 Google App Engine (python) 从 python 标准库导入 json?

由于文件命名不当(此时我无法更改或重命名),我在导入 json 时遇到问题。

在与我正在处理的文件相同的目录中有一个 json.py。 当我尝试时:

import json 

它导入同一目录中的文件。

有没有办法让我可以按照以下方式做一些事情:

from ../ import json 

导入 native JSON 库?

编辑:

我现在甚至尝试重命名有问题的文件并替换该文件的所有用途。但我仍然无法通过 GAE 导入 json 标准库。

附上错误日志:

File "/Users/admin/Blah/dataaccess.py", line 13, in <module>  
   from classes import ZenDesk     
File "/Users/admin/Blah/classes/ZenDesk.py", line 10, in <module>  
   import json 
File "/Users/admin/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 892, in load_module 
   raise ImportError('No module named %s' % fullname) 
ImportError: No module named classes.json 

请帮助谷歌应用引擎应该寻找标准库而不是在子目录类中

请您参考如下方法:

如果由于某种原因你不能重命名模块,你必须弄乱 sys.path 把你的标准库放在当前模块的前面。不过,请确保在导入后再次修复它...

import sys 
sys.path = [r'C:\Python27\Lib'] + sys.path 
import json 
sys.path = sys.path[1:] 

或者,我很确定 imp module具有此功能。

不过,让我说清楚:最好(正如其他人所说)只重命名项目目录中的模块(例如,重命名为 my_json.py ).您将不必更改那么许多依赖项。

一些编辑: 如果您找不到标准库的实际路径,无论是绝对路径还是其他路径,除了重命名之外,您还有两个选择。您可以将您正在处理的文件移动到包中的不同级别(这样它就看不到本地 json.py)。例如,像这样:

/package 
    __init__.py 
    your_file.py # "import json" should now hit the std lib. 
                 # To import the local copy, use "from app import json" 
    app/ 
        __init__.py 
        json.py 
        other_thing.py # contains "import json" to get the local copy 

如果你不想移动你的文件,那么你可以通过添加一个额外的文件来伪造它,这个文件只导入真正的 json 模块:

/package 
    __init__.py 
    json_importer.py # contains nothing but "import json" 
    app/ 
        __init__.py 
        json.py 
        your_file.py # "from package.json_importer import json" 
        other_thing.py # contains "import json" to get the local copy