LINUX.ORG.RU

import своих модулей в python


0

1

С python'ом недавно, а в google ничего конкретного не нашел.

Есть директория, например ~/my_python, где находятся мои модули (my1.py, my2.py и т.д.) . Как их использовать из других директорий для import'а, (например, import my1) ?
Прописывал эту директорию в PYTHONPATH в .bashrc:
PYTHONPATH=«${PYTHONPATH}:$HOME/my_python/
export PYTHONPATH
Не помогло - модули не видно...


В питоне перед импортом:

import sys
sys.path.append('/home/drZio/my_python/')

AIv ★★★★★
()

Если в выводе

python -c 'import sys; print sys.path'

нет my_python, то или опечатка в переменной окружения, или она не определена.

baverman ★★★
()
Ответ на: комментарий от baverman

Странно, в sys.path путь есть, а при попытке импорта пишется - No module named AAA. AAA - это модуль из прописанной директории AAA.py.
Может ли быть причина в том, что в именах директорий есть '-'. ~/my_python/A-bbb/AAA.py ?

drZlo
() автор топика

в каталоге есть файл __init__.py?

jessey
()
Ответ на: комментарий от drZlo

Может ли быть причина в том, что в именах директорий есть '-'. ~/my_python/A-bbb/AAA.py ?

Причина м.б. в том, что в имени директории есть ~. Шелл тильду понимает, питон - нет.

AIv ★★★★★
()
Ответ на: комментарий от anonymous

а в ~/my_python/A-bbb/ есть (хотя бы пустой) файл __init__.py?

Вообще то это надо для импорта пакета A-bbb (хотя оно так не проимпортиться из за дефиса), а на импорт отдельных модулей из ~/my_python/A-bbb/ это не влияет.

AIv ★★★★★
()
Ответ на: комментарий от drZlo

Например,
$HOME/my_python/A-bbb/AAA.py
$HOME/my_python/C-bbb/CCC.py
В CCC.py пишу - import AAA as a1

drZlo
() автор топика
Ответ на: комментарий от drZlo

Может ли быть причина в том, что в именах директорий есть '-'. ~/my_python/A-bbb/AAA.py ?

по-идее не должно влиять

shty ★★★★★
()
Ответ на: комментарий от baverman

[", '/home/my', '/home/my/my_python/A-bbb', '/home/my/my_python/C-bbb', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']

drZlo
() автор топика
Ответ на: комментарий от drZlo

Тогда чудеса какие то...следите за руками:

$ cd ~/tmp
tmp$ mkdir 1-23.qwerty
tmp$ cat > 1-23.qwerty/asdf.py
print "Hello drZio!"
tmp$ python
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.append("/home/aiv/tmp/1-23.qwerty")
>>> import asdf
Hello drZio!

AIv ★★★★★
()

Хм, интересно - пользую eclipse. В нем workspace $HOME/my_python, а в нем 2 проекта A-bbb и С-bbb. Так вот, запустил из директории $HOME/my_python/С-bbb из терминала python CCC.py и все ОК. А eclipse ругается, в нем значит дело... ?

drZlo
() автор топика
Ответ на: комментарий от drZlo

Ну вот и разобрались... можете делать по другому, например через /etc/python2.7/sitecustomize.py или еще как то, это надо см доки как питон строится переда запуском, я сходу не помню.

Видать еклипс по своему питон конфигурит.

AIv ★★★★★
()
Ответ на: комментарий от drZlo

Точно, в sys.path.

Я имел ввиду на диске;-)

AIv ★★★★★
()
Ответ на: комментарий от drZlo

Project -> Properties -> PyDev PYTHONPATH, там нужно добавить пути. Потом в Run -> Run Configurations -> Interpreter можно посмотреть результирующую командную строку.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Ну вот путь хочу прописать в Project -> Properties -> PyDev PYTHONPATH, прописываю /home/my/my_python/A-bbb, а он в итоге прописывает /C-bbb/home/my/my_python/A-bbb, т.е. в начало добавляет имя проекта из которого прописываю путь... ?
Я в Project Refrences галку поставил на тот проект из которого хочу импортировать и все заработало. Но с путями не понятно...

drZlo
() автор топика
Ответ на: комментарий от drZlo

Ну вот путь хочу прописать в Project -> Properties -> PyDev PYTHONPATH, прописываю /home/my/my_python/A-bbb, а он в итоге прописывает /C-bbb/home/my/my_python/A-bbb

Выглядит так, будто ты это прописываешь в Source Folders, а нужно в External libraries.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

нужно в External libraries

Точно. Большое спасибо !

drZlo
() автор топика

еще есть относительный импорт

from ../../mymodule import my1

void_ptr ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.