导入自定义模块时出现ImportError
注意,我在Stack Overflow上搜索过这个错误,虽然有很多类似的问题,但我没有找到一个能解决我这个具体问题的。
我正在做一个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 个回答
1
可以理解为从 .foo 这个文件里导入所有的内容。至少在 Python 2.7 及更高版本中是这样。
17
包含 /com
的文件夹需要被添加到 Python 的路径中。你可以通过几种方式来做到这一点:
在命令行中,每次都这样做:
user@host:~$ PYTHONPATH=/path/to/whatever python some_file.py
在你的 shell 配置文件中(比如
.bashrc
、.bash_profile
等):export PYTHONPATH=/path/to/whatever
在 Python 代码中(我不推荐这样做,因为这不是一个好的习惯):
import sys sys.path.append('/path/to/whatever')
正如一些评论者所说,通常这个问题会由容器(比如 mod_wsgi
等)来处理,或者由你的启动脚本/主脚本来处理(这个脚本可能会执行类似于选项 #3 的操作,或者可能是在像选项 #1 或 #2 这样的环境中被调用)