尝试在Python中导入自定义模块时的ImportError

时间:2011-05-03 21:16:58

标签: python module

请注意,我搜索了SO以查找此错误,虽然有许多类似的问题,但我没有找到解决此特定问题的问题。

我正在研究一个如下所示的Python模块:

/com
    /company
        /foo
        /bar

我正在编辑bar目录中的源文件,并尝试导入foo目录中的类。我尝试过以下方式导入文件:

from com.company.foo import *
from company.foo import *
from foo import *
import com.company.foo
import company.foo
import foo

其中每一个都会产生类似的错误:

ImportError: no module named com.company.foo

我在每个目录中都有__init__.py个文件,包括包含com的目录。

不确定我在这里做错了什么 - 先谢谢你的帮助!

2 个答案:

答案 0 :(得分:5)

包含/com的目录需要位于Python路径上。有很多方法可以做到这一点:

  1. 在命令行中,每次:

    user@host:~$ PYTHONPATH=/path/to/whatever python some_file.py

  2. 在您的shell配置中.bashrc.bash_profile等):

    export PYTHONPATH=/path/to/whatever

  3. 在Python代码中(我不建议这样做,作为一般做法):

    import sys
    sys.path.append('/path/to/whatever')

  4. 正如一些评论者所说,通常这是由容器(mod_wsgi等)或你的bootstrap / main脚本(可能做类似选项#3,或者可能在环境设置如选项#1或#2)

答案 1 :(得分:0)

想想吧 来自.foo import * 至少在2.7及以上