2011-05-03 143 views
7

请注意,我搜索了SO,发现了这个错误,虽然有很多类似的问题,但我没有找到解决这个问题的方法。尝试在Python中导入自定义模块时导入错误

我工作的一个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的目录。

不知道我在做什么错在这里 - 在此先感谢您的帮助!

+0

您的主文件是否位于与“com”相同的文件夹中? – rzetterberg 2011-05-03 21:21:01

+0

不,我正在编辑的文件位于'bar'目录中。 – inkedmn 2011-05-03 21:21:48

+0

我的意思是引导文件。例如“python main.py”。启动整个应用程序的文件。还是你使用wsgi或其他什么是引导? – rzetterberg 2011-05-03 21:24:29

回答

5

/com需要的目录是Python的路径上。有许多方法可以做到这一点:每次

  1. 在命令行:

    [email protected]:~$ 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')

正如一些评论者所说,通常这可以通过容器(mod_wsgi等)或通过引导/主脚本来处理(可能会执行类似选项#3的操作,或者可能会在设置的环境中调用如选项#1或#2)

0

认为这是 从包含.foo进口* 至少在2.7及以上