2013-10-14 3 views
0

Мне, должно быть, здесь что-то не хватает.Невозможно использовать __init__.py

У меня есть структура каталогов:

maths/ 
    __init__.py 
    test.py 
    ... 

    foo/ 
     __init__.py 
     ... 

    bar/ 
     __init__.py 
     ... 

В нескольких файлах (но не все), я использую путь модуля - на Ubuntu, например, - что путь /home/nebffa/Desktop/maths для некоторых задач. Тем не менее, я должен вычислить путь пакета maths во всех этих файлах, поэтому я подумал, что, возможно, будет проще получить его через __init__.py. По крайней мере, это то, что я думал, что могу сделать, основываясь на чтении на __init__.py - может, я ошибаюсь?

В любом случае, попытки сделать вещи доступными, помещая их в базу __init__.py, не работают, поэтому я думаю, что я мог бы не понимать эту концепцию Python.

+2

Что означает «test.py is just itertools»? – Adam

+1

@Adam Текст в 'test.py' буквально просто« itertools », которого достаточно, чтобы выбросить эту ошибку. –

+0

@WaleedKhan прав – nebffa

ответ

1

Если вы запустите python test.py, то __init__.py не участвует вообще.

+0

Как запустить его, чтобы задействовать '__init __. Py'? – nebffa

+0

Вам нужно будет запустить его в самой папке 'maths', в качестве модуля. – SethMMorton

+0

Вы должны импортировать весь модуль 'maths' или импортировать' maths.test' – Adam

1

maths и maths.test - это два отдельных модуля, каждый со своим собственным пространством имен. Вам нужно будет явно импортировать itertools в maths.test, если вы хотите, чтобы он был там доступен.

Также python -m maths.test.

+0

Я думал, что могу поместить вещи в '__init __. Py', и они будут автоматически импортированы при попытке запустить/импортировать test.py? – nebffa

+0

№. Каждый модуль имеет свое собственное пространство имен. –

+0

@nebffa Почему бы вам просто не поставить 'import itertools' в' test.py'? – Adam

Смежные вопросы