Форум сайта python.su
Продолжаю тему – если вам потребовался препроцессор в питоне, то вы делаете что-то не так.
Офлайн
что значит не так? вы ведь тоже не знаете как элементарно импортировать файлы уровнем выше?
вы не знаете/не предлагаете как это сделать но говорите что чтото не так,
я и сам знаю что делать импорт через sys.path жесть,
а если вы знаете другой вариант, не через sys.path то расскажите о нем
предпроцессор нужен всего лишь чтобы записать это дело в одну строку,
чтоб потом не забывать про sys.path.pop(0) и вообще чтоб это было нагляднее,читаемо
Офлайн
Чукча - не читатель, чукча - писатель.
Вам уже насоветовали несколько разных вариантов - но вы упорно выбираете самый проблемный.
В то время как стоило бы сделать один раз 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
Офлайн
По моему две точки это особенность третий версии, а у тебя скорее всего вторая. Почему про __import__() до сих пор никто не написал?
Офлайн
да, __init__.py - я позакидывал везде куда можно, когда что то не получается, я пробую разные варианты - это был один из них ), но импортнуть всеравно невышло, и после ещё нескольких попыток появилась эта тема, когда я уже забыл зачем/почему я этот __init__.py там создал.
Кажется, корень кроется в том, что вы не различаете файлы и модули. Да, зачастую модуль лежит в файловой системе (не всегда).не совсем понятно что вы понимаете под модулем?
Но у них разная система именования. Возьмем ваш пример
…
Каждый .py файл в нем - модуль? Или не каждый? Какие имена у модулей (значения атрибута __name__)?
http://www.intuit.ru/department/pl/python/2/у меня в файлах тока нескока функций, например:
Модуль оформляется в виде отдельного файла с исходным кодом
def testfnc1():
print("this testfnc1")
def testfnc2():
print("this testfnc2")
Просто пропишите имена, а потом можно перейти к тому, чтобы “элементарно импортировать файлы уровнем выше”.где именно? как?
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
Офлайн