【问题标题】:how to import the parent model on gae-python如何在 gae-python 上导入父模型
【发布时间】:2010-06-11 03:05:35
【问题描述】:
main:.
├─a
│     ├─__init__.py
│     └─aa.py
├─b
│     ├─__init__.py
│     └─bb.py
└─cc.py

如果我在aa.py,如何导入cc.py?

这是我的代码,但它是错误的:

from main import cc

我该怎么办。

谢谢

更新

在普通的python文件中(不在gae上),我可以使用这个代码:

import os,sys
dirname=os.path.dirname
path=os.path.join(dirname(dirname(__file__)))
sys.path.insert(0,path)
import cc
print cc.c

但在 gae 上,它显示错误:

ImportError: No module named cc

【问题讨论】:

    标签: python google-app-engine import model parent


    【解决方案1】:

    我不明白您显示的代码如何可能会失败。为了重现您的问题,我构建了以下精简项目:

    $ ls -lR
    total 32
    -rw-r--r--  1 aleax  staff    0 Jun 10 21:20 __init__.py
    drwxr-xr-x  4 aleax  staff  136 Jun 10 21:28 a
    -rw-r-----@ 1 aleax  staff  107 Jun 10 21:27 app.yaml
    -rw-r--r--  1 aleax  staff   21 Jun 10 21:20 cc.py
    -rw-r--r--  1 aleax  staff  471 Jun 10 21:25 index.yaml
    -rw-r--r--  1 aleax  staff   75 Jun 10 21:20 main.py
    
    ./a:
    total 8
    -rw-r--r--  1 aleax  staff    0 Jun 10 21:20 __init__.py
    -rw-r--r--  1 aleax  staff  130 Jun 10 21:20 aa.py
    

    以下是非空 Python 文件:

    $ for f in main.py cc.py a/aa.py; do echo "File: $f"; cat $f; echo; done
    File: main.py
    print 'Content-Type: text/plain'
    print ''
    print 'in main'
    from a import aa
    
    File: cc.py
    print 'in cc'
    c = 23
    
    File: a/aa.py
    import os, sys
    dirname=os.path.dirname
    path=os.path.join(dirname(dirname(__file__)))
    sys.path.insert(0,path)
    import cc
    print cc.c
    $ 
    

    正如预期的那样,它运行得很好,显示(无论是在 SDK 上本地运行时,还是在位于 appspot.com 的谷歌服务器上运行时):

    in main
    in cc
    23
    

    因此,您未向我们展示的部分代码中肯定存在其他错误。请通过复制这个小项目并在本地和 appspot.com 上进行尝试来确认这一点,并让我们知道它是如何为您工作(或失败...?)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 2020-12-06
      • 2012-12-24
      • 2019-05-31
      • 1970-01-01
      • 2012-10-30
      相关资源
      最近更新 更多