[Python] Проблема с Import, по вопросу организации файлов проекта

cooluser
Дата: 03.07.2006 14:40:06
Господа!

Есть проект с такой структурой каталогов:
src
\
package1
\
module1
module2
module3
package2
\ module4

Т.е. два пакета package1 и package2 внутри них какие то модули. Проблема в том, что классы внутри модуля module4 не видят классы которые лежат в модулях пакета package1

как решить?
асёлъ
Дата: 03.07.2006 18:37:41
cooluser
Проблема в том, что классы внутри модуля module4 не видят классы которые лежат в модулях пакета package1

откуда узнал? как пишешь import ... ?
cooluser
Дата: 03.07.2006 19:26:10
import package1.module

не работает

кто нибудь может объяснить как надо и почему?
асёлъ
Дата: 04.07.2006 00:18:07
cooluser
import package1.module

не работает

кто нибудь может объяснить как надо и почему?
скорей фсево
зобылъ написать два файла (по одному на package) с именем __init__.py
структура должна быть такой примерно:


[source]
[package1]
__init__.py
module1.py
module2.py
module3.py
[package2]
__init__.py
module4.py

файлы __init__.py щас пустые. потому что не надо ничего.
файлы module1, 2, 3.py:

class Module{X}Class:
pass

где {X} - типа номер модуля

файл module4.py:

# one way
import package1.module1;

# another way
from package1.module2 import Module2Class;

class Module4Class:
def someFunction1(self):
m1c = package1.module1.Module1Class()
print 'someFunction1: m1c = module1.Module1Class'

def someMethod2(self):
m2c = Module2Class
print 'someMethod2: m2c = Module2Class'

cl = Module4Class()
cl.someFunction1()
cl.someMethod2()

все работает вощето.
cooluser
Дата: 04.07.2006 06:21:41
Да, все верно файлы __init__.py есть

Но не работает

Ты как запускаешь файл module4.py? Из какой текущей директории? Какая командная строка?
ziro
Дата: 04.07.2006 10:32:22
Сдается мне переменная системы PYTHONPATH не прописана.
Или в нее не включен путь до pakage1.
cooluser
Дата: 04.07.2006 10:40:12
Правильно, не прописана
Что в ней должно быть в моем случае?
ziro
Дата: 04.07.2006 11:11:10
Да в общм то только путь каталога, в котором находится package1.
То есть, если у тебя package1 имеет путь C:\project\src\package1,
то, соответственно, необходимо прописать
SET PYTHONPATH = "C:\project\src".
Но только делать это нужно до того, как запустишь скрипт с питоном.
Кстати, ты можешь и несколько каталогов указать в этой переменной.
cooluser
Дата: 04.07.2006 13:11:13
Все спасибо, разобрался! :)