Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 13, 2010 16:33:50

zloyGamer
От:
Зарегистрирован: 2010-06-10
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

import файлов находящихся в соседней папке

вот структура каталогов/файлов :

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” ?



Отредактировано (Июнь 13, 2010 16:36:52)

Офлайн

#2 Июнь 13, 2010 16:39:34

zloyGamer
От:
Зарегистрирован: 2010-06-10
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

import файлов находящихся в соседней папке

ЗЫ:
файл __init__.py везде пустой

в testmod1.py и testmod2.py по одной функции:

def testfnc1():
print "call testfnc1"
def testfnc2():
print "call testfnc2"
соответственно.



Офлайн

#3 Июнь 13, 2010 17:05:08

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

import файлов находящихся в соседней папке

эти 2 точки ты сам придумал или подсказал кто?)

когда делается from myFunc1.testmod1 import * мы импортруем все из модуля testmod1 пакета myFunc1



Отредактировано (Июнь 13, 2010 17:06:14)

Офлайн

#4 Июнь 13, 2010 17:26:52

zloyGamer
От:
Зарегистрирован: 2010-06-10
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

import файлов находящихся в соседней папке

когда делается 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 *
и все неработает!
что тут не так? в какую сторону копать? что делать? куда бежать? и кто виноват?



Отредактировано (Июнь 13, 2010 17:44:22)

Офлайн

#5 Июнь 13, 2010 17:46:58

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

import файлов находящихся в соседней папке

внезапно, вы правы. Прошу прощения :)
Ниразу не требовалось вызывать из внутреннего модуля модуль выше…

Наверно это связано с тем, что вы запускаете proj0.py как программу.



Отредактировано (Июнь 13, 2010 17:49:55)

Офлайн

#6 Июнь 13, 2010 17:53:45

zloyGamer
От:
Зарегистрирован: 2010-06-10
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

import файлов находящихся в соседней папке

ошибка подкралась тихо, неожиданно и незаметно,
ыы, а я с питоно меньше 5 дней борюсь и тут уже такое и срочно и надо ))



Отредактировано (Июнь 13, 2010 17:54:08)

Офлайн

#7 Июнь 13, 2010 17:58:06

zloyGamer
От:
Зарегистрирован: 2010-06-10
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

import файлов находящихся в соседней папке

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

какими ещё способом можно его стартануть?



Офлайн

#8 Июнь 13, 2010 18:57:56

zloyGamer
От:
Зарегистрирован: 2010-06-10
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

import файлов находящихся в соседней папке

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

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



Офлайн

#9 Июнь 13, 2010 19:27:37

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

import файлов находящихся в соседней папке

из другого модуля попробуй вызвать.

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



Офлайн

#10 Июнь 13, 2010 20:40:04

Kogrom
От:
Зарегистрирован: 2009-12-03
Сообщения: 160
Репутация: +  0  -
Профиль   Отправить e-mail  

import файлов находящихся в соседней папке

Может это поможет:

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

Честно говоря, я не стал делать так, как мне советовал Андрей Светлов. Как-то оно само собой отпало из-за того, что я увлёкся играми с утиной типизацией… Но надо будет это осилить, написать скрипты. Может даже в этой теме.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version