как импортировать родительскую модель на gae-python - PullRequest
0 голосов
/ 11 июня 2010
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

1 Ответ

0 голосов
/ 11 июня 2010

Я не понимаю, как код, который вы показали, может быть неудачным для вас. Пытаясь воспроизвести вашу проблему, я построил следующий урезанный проект:

$ 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, так и при запуске на серверах Google на appspot.com):

in main
in cc
23

Так что в некоторых частях вашего кода должна быть какая-то другая ошибка, которую вы нам не показываете. Пожалуйста, подтвердите это, воспроизведя этот крошечный проект и попробовав его как локально, так и на appspot.com, и сообщите нам, как он работает (или не работает ...?) Для вас.

...