Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 13, 2010 22:47:27

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

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

Ну и, конечно же, тут много интересного и на русском:
http://asvetlov.blogspot.com/2010/05/blog-post.html

3 части. Начиная с основ. Хотя, если честно, немного расстраивает, что там много теории и мало примеров. Я обычно начинаю понимать с практического примера. После этого и теория нормально воспринимается.

То есть статьи больше рассчитаны на то, чтобы упорядочить знания тех, кто и так знает.



Офлайн

#2 Июнь 14, 2010 18:52:53

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

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

Kogrom, вы правы. Эти статьи, в первую очередь - упорядоченное перечисление всех моих знаний о том, как работает импорт в Питоне.
Это довольно объем большой информации, и я посчитал нужным сначала изложить все _без примеров_ - просто потому, что без знания основ невозможно углублятся в детали.

Сейчас заканчиваю вычитку двух последних теоретических статей серии. Надеюсь, это действительно все. Зимой, начиная делать наброски, я не предполагал, что нужно рассказать так много перед тем, как начать приводить код.

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

Если у вас есть какие-нибудь пожелания по примерам - буду рад выслушать. Например, в этом топике проблема может быть решена через установку __package__ в модуле __main__ - и, наверное, я развернуто опишу решение. Можно и через sitecustomize.py (за попытку - наказывать с особым цинизмом).
Все еще рекомендую, как и писал ранее, использовать правильные setup.py

В общем, если сформируете ваш запрос - попробую написать об этом. Только, прошу - создайте новую тему для обсуждения.



Отредактировано (Июнь 14, 2010 18:54:39)

Офлайн

#3 Июнь 14, 2010 21:52:24

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

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

Андрей Светлов
Если у вас есть какие-нибудь пожелания по примерам - буду рад выслушать.
Пока нету, ибо нет потребности.
Тему создавать тоже не буду пока, так как не чётко представляю о чём она будет. Но какие-то зацепки есть.

Андрей Светлов
Например, в этом топике проблема может быть решена через установку __package__ в модуле __main__ - и, наверное, я развернуто опишу решение.
В этом топике проблему лучше решать через передачу объектов, а не манипуляцию с пакетами и модулями. То есть, например, на верхнем уровне создаём объект, передаем вглубь, там он обрабатывается и возвращается. Я так вижу.

Другое дело, если у нас есть пакет (или даже модуль), который используется в нескольких проектах. Тут действительно нужна какая-то установка. Но можно получить что-то типа длл-хелла. Хотя, вероятно, какие-то предохранители предусмотрены.



Офлайн

#4 Июнь 15, 2010 06:36:31

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

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

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

import sys

from myFunc1.testmod1 import *

sys.path.insert(0, "..")
from myFunc2.testmod2 import * #а это для соседней папки с главным модулем
sys.path.pop(0) #убираем за собой
на мой взгляд это просто дикое решение которое немного попахиват,
если не убирать за собой(sys.path.pop(0) ) то к концу всех импортов в sys.path будет такая куча г,
с другой стороны этот же sys.path может ещё также модифицироваться во включаемых модулях,
это хорошо если там будут включения подобные этому, а если нет? если sys.path будет меняться в каких то других целях и по делу?
- в таком случае этот говнокод непокатит, и в большой его куче придется долго искать ошибку

вообщем пока вы тут умничаете и дописываете ваши статьи - говнокод плодится просто в нереальном количестве!
спешите, спешите.. )



Офлайн

#5 Июнь 15, 2010 11:36:52

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

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

почему-бы не применить .pth файл на корень проекта?



Офлайн

#6 Июнь 15, 2010 15:46:56

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

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

почему бы не проектировать пакеты правильно?



Офлайн

#7 Июнь 15, 2010 16:29:04

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

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

Zubchick
почему бы не проектировать пакеты правильно?
это было-бы слишком замечательно.



Офлайн

#8 Июнь 15, 2010 19:03:42

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

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

почему бы не проектировать пакеты правильно?
все предельно правильно! во всяком случае в моем проекте по моему мнению!

а вот подскажите ещё, нет ли в питоне такой штуки типа как предпроцессор в СИ или чтото подобное чтоб можно было вот это :
sys.path.insert(0, "..")
from myFunc2.testmod2 import *
sys.path.pop(0)
записать в одну строчку?



Офлайн

#9 Июнь 15, 2010 19:41:11

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

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

sys.path.insert(0, "..");from myFunc2.testmod2 import *;sys.path.pop(0)
про препроцессор: http://pypi.python.org/pypi/pypreprocessor/0.3.0

но, меня терзают смутные сомнения, что все-таки вас несет не туда, если требуются такие хаки.



Офлайн

#10 Июнь 15, 2010 20:24:29

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

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

truporez
про препроцессор: http://pypi.python.org/pypi/pypreprocessor/0.3.0
спасибо огромное! это то что доктор прописал!

truporez
но, меня терзают смутные сомнения, что все-таки вас несет не туда, если требуются такие хаки.
да, меня тоже терзают после того как в дело пошел sys.path

молодец автор pypreprocessor'а, хотя он могбы как define тудаже прикрутить ещё и инклуд, былобы вообще здорово! цены бы ему не было!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version