python - 使用__init__.py为多个目录中的模块

时间:2011-04-05 03:44:00

标签: python module

我很难理解这一点。

让我们假设我有一个如下所示的目录树:

〜/语音
- __init__.py
- program.py
----------------
〜/语音/份
---- __init__.py
----noun.py
----verb.py
----------------
〜/语音/句子
---- __init__.py
----subject.py
----predicate.py

__init__.py个文件为空。我通过发出$ touch __init__.py来创建它们 当我尝试导入任何东西时,我得到NameError:'无论'未定义。 我已经尝试了目录名和单个文件名。

我在python中遇到的每一个问题都是因为我过度思考并试图让它变得比实际更复杂。 (诅咒c ++习惯!)

3 个答案:

答案 0 :(得分:1)

除非~是您当前的目录或位于sys.path(它不应该是),否则您将无法使用其中包含的任何包,包括speech和它的子包。将目录结构放在某处,并将该路径添加到$PYTHONPATH

答案 1 :(得分:1)

您可以使用以下命令快速将当前目录添加到python搜索路径:

export PYTHONPATH=$(pwd)

以下是您应阅读的背景信息:

Python's Module Search Path

答案 2 :(得分:1)

好的,我终于明白了。

如果我希望它看起来像“java风格的类”,那么我导入:

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

如果我希望它看起来更像C / ++样式的lib调用,那么我通过以下方式导入:

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

*sigh*这很简单,很难。