Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 12, 2009 10:53:22

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Динамический импорт

patriotyk
Я как составлял этот пост кажется понял в чем проблема, у меня sys.path:
Правильно говорят, что правильно поставленный вопрос, это уже половина ответа :)



Офлайн

#2 Окт. 12, 2009 14:46:59

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Динамический импорт

patriotyk
Я как составлял этот пост кажется понял в чем проблема, у меня sys.path
нету /usr/share/python-support, как такое случилось?
Если у вас что-то дебианообразное(Ubuntu?), то его там и не должно быть.

А вот симлинк на это ниже /usr/lib/python*/ должен. Вот, например:
$ ls -l /var/lib/python-support/python2.4/pyparsing.py
lrwxrwxrwx 1 root root 55 Nov 17 2008 /var/lib/python-support/python2.4/pyparsing.py -> /usr/share/python-support/python-pyparsing/pyparsing.py
Все это похоже на трудности с пакетной системой.



Офлайн

#3 Окт. 12, 2009 15:06:05

patriotyk
От:
Зарегистрирован: 2008-09-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамический импорт

Ed
patriotyk
Я как составлял этот пост кажется понял в чем проблема, у меня sys.path
нету /usr/share/python-support, как такое случилось?
Если у вас что-то дебианообразное(Ubuntu?), то его там и не должно быть.

А вот симлинк на это ниже /usr/lib/python*/ должен. Вот, например:
$ ls -l /var/lib/python-support/python2.4/pyparsing.py
lrwxrwxrwx 1 root root 55 Nov 17 2008 /var/lib/python-support/python2.4/pyparsing.py -> /usr/share/python-support/python-pyparsing/pyparsing.py
Все это похоже на трудности с пакетной системой.
Не понял коммента. У меня дебиан ленни. В нем практически все python модули устанавливаются в /usr/share/python-support/ .
Вопрос в том почему он не в sys.path импортируемого модуля.



Офлайн

#4 Окт. 12, 2009 18:04:50

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Динамический импорт

patriotyk
Не понял коммента. У меня дебиан ленни. В нем практически все python модули устанавливаются в /usr/share/python-support/ .
Вопрос в том почему он не в sys.path импортируемого модуля.
Да, модули устанавливаются туда. Только потом на них делаются симлинки ниже /usr/lib/, которые я показал.

Давайте я покажу на примере. Возьмем первый попавшийся пакет, скажем python-xdg.
Смотрим, что у нас в пакете:
$ dpkg -L python-xdg
...
/usr/share/python-support
/usr/share/python-support/python-xdg
/usr/share/python-support/python-xdg/xdg
/usr/share/python-support/python-xdg/xdg/RecentFiles.py
/usr/share/python-support/python-xdg/xdg/IniFile.py
/usr/share/python-support/python-xdg/xdg/Config.py
...
Из-за врожденной ущербности пакетной системы Debian симлинки, о которых я говорил вы не видите. И никто не видит. А они есть :)

Смотрим откуда у нас этот xdg будет импортироваться:
In [1]: import xdg
In [2]: xdg.__file__
Out[2]: '/usr/lib/pymodules/python2.5/xdg/__init__.pyc'
Смотрим что же у нас такое лежит в /usr/lib/pymodules/python2.5/xdg/:
$ ls -l /usr/lib/pymodules/python2.5/xdg/
total 152
lrwxrwxrwx 1 root root 57 2009-04-27 14:44 BaseDirectory.py -> /usr/share/python-support/python-xdg/xdg/BaseDirectory.py
-rw-r--r-- 1 root root 4341 2009-04-27 14:45 BaseDirectory.pyc
lrwxrwxrwx 1 root root 50 2009-04-27 14:44 Config.py -> /usr/share/python-support/python-xdg/xdg/Config.py
-rw-r--r-- 1 root root 1613 2009-04-27 14:45 Config.pyc
lrwxrwxrwx 1 root root 56 2009-04-27 14:44 DesktopEntry.py -> /usr/share/python-support/python-xdg/xdg/DesktopEntry.py
-rw-r--r-- 1 root root 18519 2009-04-27 14:45 DesktopEntry.pyc
...
Смотрим, есть ли у нас /usr/lib/pymodules/python2.5/ в sys.path:
$ python -c 'import sys; print sys.path'
['', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages/gst-0.10', '/usr/lib/pymodules/python2.5', '/usr/lib/python2.5/site-packages/gtk-2.0', '/usr/lib/pymodules/python2.5/gtk-2.0', '/usr/lib/python2.5/site-packages/wx-2.8-gtk2-unicode']
Как видите есть.

Вот, так оно и работает. Поэтому, раз у вас симлинков этих нет я и предположил, что вы забивали шурупы молотком, то бишь инсталлировали пакет с использованием –force-yes и подобных заменителей лома.

Пробовал я все это на Debian testing, он же squeeze/sid.

Удачи!



Отредактировано (Окт. 12, 2009 20:26:48)

Офлайн

#5 Окт. 13, 2009 12:42:46

patriotyk
От:
Зарегистрирован: 2008-09-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамический импорт

К сожелению у меня есть симлинки в /usr/lib/pymodules/python2.5/pylons и они верные. ставил пакеты нормально из сида и там проблем нету потому что пайлонс апликации работают. Не импортятся pylons модули из модуля который бил динамически загружен.



Офлайн

#6 Окт. 13, 2009 13:17:54

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

Динамический импорт

patriotyk
ImportError: cannot import name config
А как называется модуль в котором вы делаете динамический импорт? И нет ли модуля pylons.py где-то в sys.path выше?



Офлайн

#7 Окт. 13, 2009 13:32:29

patriotyk
От:
Зарегистрирован: 2008-09-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамический импорт

Daevaorn
patriotyk
ImportError: cannot import name config
А как называется модуль в котором вы делаете динамический импорт? И нет ли модуля pylons.py где-то в sys.path выше?
хм даже не задумывался. Модуль в котором делаю иморт зовется app.py но модуль который динамически импортируюу это мой модуль pylons.py. Наверное конфликт какой то.



Офлайн

#8 Окт. 13, 2009 14:20:03

patriotyk
От:
Зарегистрирован: 2008-09-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамический импорт

Я проверил да это изза моего pylons.py если его убрать то все работет. Как мне обойти это не переназывая файла?



Офлайн

#9 Окт. 13, 2009 22:31:53

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Динамический импорт

patriotyk
Я проверил да это изза моего pylons.py если его убрать то все работет. Как мне обойти это не переназывая файла?
простой ответ: никак.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version