Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 15, 2010 21:12:14

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

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

Продолжаю тему – если вам потребовался препроцессор в питоне, то вы делаете что-то не так.



Офлайн

#2 Июнь 16, 2010 08:34:20

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

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

что значит не так? вы ведь тоже не знаете как элементарно импортировать файлы уровнем выше?
вы не знаете/не предлагаете как это сделать но говорите что чтото не так,
я и сам знаю что делать импорт через sys.path жесть,
а если вы знаете другой вариант, не через sys.path то расскажите о нем

предпроцессор нужен всего лишь чтобы записать это дело в одну строку,
чтоб потом не забывать про sys.path.pop(0) и вообще чтоб это было нагляднее,читаемо



Офлайн

#3 Июнь 16, 2010 10:09:04

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

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

Чукча - не читатель, чукча - писатель.

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

Кажется, корень кроется в том, что вы не различаете файлы и модули. Да, зачастую модуль лежит в файловой системе (не всегда).
Но у них разная система именования. Возьмем ваш пример:

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
Каждый .py файл в нем - модуль? Или не каждый? Какие имена у модулей (значения атрибута __name__)? Особенно курьезно выглядит последний __init__.py …

Просто пропишите имена, а потом можно перейти к тому, чтобы “элементарно импортировать файлы уровнем выше”.



Офлайн

#4 Июнь 16, 2010 16:06:33

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2789
Репутация: +  185  -
Профиль   Отправить e-mail  

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

По моему две точки это особенность третий версии, а у тебя скорее всего вторая. Почему про __import__() до сих пор никто не написал?



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Июнь 16, 2010 17:05:36

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

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

да, __init__.py - я позакидывал везде куда можно, когда что то не получается, я пробую разные варианты - это был один из них ), но импортнуть всеравно невышло, и после ещё нескольких попыток появилась эта тема, когда я уже забыл зачем/почему я этот __init__.py там создал.

Кажется, корень кроется в том, что вы не различаете файлы и модули. Да, зачастую модуль лежит в файловой системе (не всегда).
Но у них разная система именования. Возьмем ваш пример

Каждый .py файл в нем - модуль? Или не каждый? Какие имена у модулей (значения атрибута __name__)?
не совсем понятно что вы понимаете под модулем?
http://www.intuit.ru/department/pl/python/2/
Модуль оформляется в виде отдельного файла с исходным кодом
у меня в файлах тока нескока функций, например:
prj\myFunc1\testmod1.py
def testfnc1():
print("this testfnc1")
myFunc2\testmod2.py
def testfnc2():
print("this testfnc2")
Просто пропишите имена, а потом можно перейти к тому, чтобы “элементарно импортировать файлы уровнем выше”.
где именно? как?

и все __name__ у меня заданы по умолчанию:
import sys
import myFunc1.testmod1
sys.path.insert(0, "..")
import myFunc2.testmod2
sys.path.pop(0)
print(__name__)
print(myFunc1.testmod1.__name__)
print(myFunc2.testmod2.__name__)
выдает:
__main__
myFunc1.testmod1
myFunc2.testmod2



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version