Найти - Пользователи
Полная версия: import файлов находящихся в соседней папке
Начало » Python для новичков » import файлов находящихся в соседней папке
1 2 3
zloyGamer
вот структура каталогов/файлов :
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
ЗЫ:
файл __init__.py везде пустой

в testmod1.py и testmod2.py по одной функции:
def testfnc1():
print "call testfnc1"
def testfnc2():
print "call testfnc2"
соответственно.
Zubchick
эти 2 точки ты сам придумал или подсказал кто?)

когда делается from myFunc1.testmod1 import * мы импортруем все из модуля testmod1 пакета myFunc1
zloyGamer
когда делается 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
внезапно, вы правы. Прошу прощения :)
Ниразу не требовалось вызывать из внутреннего модуля модуль выше…

Наверно это связано с тем, что вы запускаете proj0.py как программу.
zloyGamer
ошибка подкралась тихо, неожиданно и незаметно,
ыы, а я с питоно меньше 5 дней борюсь и тут уже такое и срочно и надо ))
zloyGamer
Наверно это связано с тем, что вы запускаете proj0.py как программу.
оп, а как тогда надо?
йа запускаю так: C:\Python26\python.exe “c:\long path\prj\prj0.py”

какими ещё способом можно его стартануть?
zloyGamer
ау, не забывайте про меня,
извеняюсь за след текст,: но мне срочно надо освоить питон в кратчайшие сроки, и нет времени зацикливаться на таких мелочах, ведь так и за неделю никуда продвинусь/ничего не сделаю,
спасите/помогите, бросьте мне спасательный круг, веревку или наковальню, хоть что нибудь но надо решить

пс: напутствие и откровение1: уже нет никаких сил, хочется когото придушить/порвать/порезать/и конечно же расчленить, и сегдня я думаю это будет клвиатура, но завтра может оказаться кто то другой, спешите, спешите…
Zubchick
из другого модуля попробуй вызвать.

Вообще, по мне так модули нижних уровней не должны ничего знать о модулях верхних.
Kogrom
Может это поможет:

http://python.su/forum/viewtopic.php?id=5817

Честно говоря, я не стал делать так, как мне советовал Андрей Светлов. Как-то оно само собой отпало из-за того, что я увлёкся играми с утиной типизацией… Но надо будет это осилить, написать скрипты. Может даже в этой теме.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB