zloyGamer
Июнь 13, 2010 16:33:50
вот структура каталогов/файлов :
myFunc2\__init__.py
myFunc2\testmod2.py
prj\myFunc1\__init__.py
prj\myFunc1\testmod1.py
prj\myFunc1\testmod1.pyc
prj\__init__.py
prj\prj0.py
__init__.py
если я в prj0.py прописываю:
from myFunc1.testmod1 import * # - тут все ок!
#а если так:
from ..myFunc2.testmod2 import *
то получаю сообщение:
Traceback (most recent call last):
File “c:\long path\prj\prj0.py”, line 2, in <module>
from ..myFunc2.testmod2 import *
ValueError: Attempted relative import in non-package
- почему? зачто? ведь там все пакеты, везде есть файл __init__.py
как можно/что нужно чтоб из prj0.py подключить “..\myFunc2\testmod2.py” ?
zloyGamer
Июнь 13, 2010 16:39:34
ЗЫ:
файл __init__.py везде пустой
в testmod1.py и testmod2.py по одной функции:
def testfnc1():
print "call testfnc1"
def testfnc2():
print "call testfnc2"
соответственно.
Zubchick
Июнь 13, 2010 17:05:08
эти 2 точки ты сам придумал или подсказал кто?)
когда делается from myFunc1.testmod1 import * мы импортруем все из модуля testmod1 пакета myFunc1
zloyGamer
Июнь 13, 2010 17:26:52
когда делается from myFunc1.testmod1 import * мы импортруем все из модуля testmod1 пакета myFunc1
да, совершенно верно!, импортируется все из файла “myFunc1/testmod1.py” - именно это и требуется,
а также надо чтоб импортировалось все из файла “../myFunc2/testmod2.py” (директорией выше)
эти 2 точки ты сам придумал или подсказал кто?)
про эти 2 точки я подсмотрел
туттакже ещё пробывал варианты:
from .myFunc2.testmod2 import *
from ..myFunc2.testmod2 import *
from ...myFunc2.testmod2 import *
и все неработает!
что тут не так? в какую сторону копать? что делать? куда бежать? и кто виноват?
Zubchick
Июнь 13, 2010 17:46:58
внезапно, вы правы. Прошу прощения :)
Ниразу не требовалось вызывать из внутреннего модуля модуль выше…
Наверно это связано с тем, что вы запускаете proj0.py как программу.
zloyGamer
Июнь 13, 2010 17:53:45
ошибка подкралась тихо, неожиданно и незаметно,
ыы, а я с питоно меньше 5 дней борюсь и тут уже такое и срочно и надо ))
zloyGamer
Июнь 13, 2010 17:58:06
Наверно это связано с тем, что вы запускаете proj0.py как программу.
оп, а как тогда надо?
йа запускаю так: C:\Python26\python.exe “c:\long path\prj\prj0.py”
какими ещё способом можно его стартануть?
zloyGamer
Июнь 13, 2010 18:57:56
ау, не забывайте про меня,
извеняюсь за след текст,: но мне срочно надо освоить питон в кратчайшие сроки, и нет времени зацикливаться на таких мелочах, ведь так и за неделю никуда продвинусь/ничего не сделаю,
спасите/помогите, бросьте мне спасательный круг, веревку или наковальню, хоть что нибудь но надо решить
пс: напутствие и откровение1: уже нет никаких сил, хочется когото придушить/порвать/порезать/и конечно же расчленить, и сегдня я думаю это будет клвиатура, но завтра может оказаться кто то другой, спешите, спешите…
Zubchick
Июнь 13, 2010 19:27:37
из другого модуля попробуй вызвать.
Вообще, по мне так модули нижних уровней не должны ничего знать о модулях верхних.
Kogrom
Июнь 13, 2010 20:40:04
Может это поможет:
http://python.su/forum/viewtopic.php?id=5817Честно говоря, я не стал делать так, как мне советовал
Андрей Светлов. Как-то оно само собой отпало из-за того, что я увлёкся играми с утиной типизацией… Но надо будет это осилить, написать скрипты. Может даже в этой теме.