python - использование __init__.py для модулей в нескольких директориях - PullRequest
1 голос
/ 05 апреля 2011

Мне трудно понять это.

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

~ / speech
- __init__.py
- program.py
----------------
~ / речь / части
---- __init__.py
---- имя существительное
---- verb.py
----------------
~ / речь /предложение
---- __init__.py
---- subject.py
----predicate.py

__init__.py файлы являются пустыми.Я создал их, выдав $ touch __init__.py
, когда я пытаюсь импортировать что-либо, я получаю NameError: «что бы то ни было» не определено.Я пробовал все, что касается как имени каталога, так и отдельных имен файлов.

каждая другая проблема, с которой я столкнулся в python, заключалась в том, что я слишком много думал над этим и пытался усложнить его.чем это на самом деле.(проклинаю привычки С ++!)

Ответы [ 3 ]

1 голос
/ 05 апреля 2011

вы можете быстро добавить свой текущий каталог в путь поиска python с помощью:

export PYTHONPATH=$(pwd)

Вот некоторая справочная информация, которую вы должны прочитать:

Путь поиска модуля Python

1 голос
/ 05 апреля 2011

Хорошо, я наконец понял это.

Если я хочу, чтобы это выглядело как "классы в стиле java", то я импортирую через:

import parts.noun  
import sentence.subject  
parts.noun.defineNouns()  
sentence.subject.thePersonOrThing()  

Если я хочу, чтобы он больше походил на вызов lib в стиле C / ++, я импортирую через:

from parts.noun import defineNouns  
from sentence.subject import thePersonOrThing  
defineNouns()  
thePersonOrThing()  

*sigh* это так просто, это сложно.

1 голос
/ 05 апреля 2011

Если ~ не является вашим текущим каталогом или находится в sys.path (что не должно быть), вы не сможете использовать любые содержащиеся в нем пакеты, включая speech и его подпакеты.Поместите структуру каталогов где-нибудь в здравом уме и добавьте этот путь к $PYTHONPATH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...