Форум сайта python.su
Ну и, конечно же, тут много интересного и на русском:
http://asvetlov.blogspot.com/2010/05/blog-post.html
3 части. Начиная с основ. Хотя, если честно, немного расстраивает, что там много теории и мало примеров. Я обычно начинаю понимать с практического примера. После этого и теория нормально воспринимается.
То есть статьи больше рассчитаны на то, чтобы упорядочить знания тех, кто и так знает.
Офлайн
Kogrom, вы правы. Эти статьи, в первую очередь - упорядоченное перечисление всех моих знаний о том, как работает импорт в Питоне.
Это довольно объем большой информации, и я посчитал нужным сначала изложить все _без примеров_ - просто потому, что без знания основ невозможно углублятся в детали.
Сейчас заканчиваю вычитку двух последних теоретических статей серии. Надеюсь, это действительно все. Зимой, начиная делать наброски, я не предполагал, что нужно рассказать так много перед тем, как начать приводить код.
В планах лежит еще пример очень нетривиального расширения импорта - что-то вроде демонстрации всего изложенного в действии. Там на данный момент почти только один код - все уже, вроде бы, разжевал.
Если у вас есть какие-нибудь пожелания по примерам - буду рад выслушать. Например, в этом топике проблема может быть решена через установку __package__ в модуле __main__ - и, наверное, я развернуто опишу решение. Можно и через sitecustomize.py (за попытку - наказывать с особым цинизмом).
Все еще рекомендую, как и писал ранее, использовать правильные setup.py
В общем, если сформируете ваш запрос - попробую написать об этом. Только, прошу - создайте новую тему для обсуждения.
Отредактировано (Июнь 14, 2010 18:54:39)
Офлайн
Андрей СветловПока нету, ибо нет потребности.
Если у вас есть какие-нибудь пожелания по примерам - буду рад выслушать.
Андрей СветловВ этом топике проблему лучше решать через передачу объектов, а не манипуляцию с пакетами и модулями. То есть, например, на верхнем уровне создаём объект, передаем вглубь, там он обрабатывается и возвращается. Я так вижу.
Например, в этом топике проблема может быть решена через установку __package__ в модуле __main__ - и, наверное, я развернуто опишу решение.
Офлайн
питон это особенный язык, хотябы потому, что просто нереально сделать простейшие вещи по человечески, и так тяжело добиться адекватного ответа от людей немного знающих питон,
я пока сделал так:
import sys
from myFunc1.testmod1 import *
sys.path.insert(0, "..")
from myFunc2.testmod2 import * #а это для соседней папки с главным модулем
sys.path.pop(0) #убираем за собой
Офлайн
почему-бы не применить .pth файл на корень проекта?
Офлайн
почему бы не проектировать пакеты правильно?
Офлайн
Zubchickэто было-бы слишком замечательно.
почему бы не проектировать пакеты правильно?
Офлайн
почему бы не проектировать пакеты правильно?
sys.path.insert(0, "..")
from myFunc2.testmod2 import *
sys.path.pop(0)
Офлайн
sys.path.insert(0, "..");from myFunc2.testmod2 import *;sys.path.pop(0)
Офлайн
truporezспасибо огромное! это то что доктор прописал!
про препроцессор: http://pypi.python.org/pypi/pypreprocessor/0.3.0
truporezда, меня тоже терзают после того как в дело пошел sys.path
но, меня терзают смутные сомнения, что все-таки вас несет не туда, если требуются такие хаки.
Офлайн