我知道这个问题在这里被问了很多次,我可能已经阅读了大部分的答案(包括this和that)以及python文档,但是仍然找不到我的非常简单的导入问题的答案。很简单,我一定会错过一些愚蠢的事情,但我还没看到。 我已设置以下结构:
myproject
myscript.py
MyPackage
__init.py__
mymodule.py
我只想从myscript.py
加载mymodule.p
y(或者应该是相同的命令行python解释器)。
myscript.py
包含:
#!/usr/bin/python
import MyPackage
__init.py__
包含:
from . import mymodule
mymodule.py
包含
#!/usr/bin/python
def myfunction():
print "mymessage"
我的目标是从myscript.py
调用myfunction
,但是如果我尝试调用
$python myscript.py
Traceback (most recent call last):
File "myscript.py", line 2, in <module>
import MyPackage
ImportError: No module named MyPackage
PYTHONPATH
环境变量设置为myproject
目录以及.
目录和两者。__init.py__
留空myproject
目录开始我尝试了以下导入语句:
from MyPackage import mymodule
import MyPackage.mymodule
import MyPackage.mymodule as module
都没有成功(同样的错误消息)。
如果我在不使用包的情况下将mymodule.py
放在项目目录中,那么import可以正常工作。但我不明白为什么从子包导入不起作用。
你知道我怎样才能让它工作吗?
谢谢你的帮助!
编辑文章格式时,我注意到您正在调用文件
__init.py_
。这导致python无法将您的MyPackage
目录识别为包,因此ImportError: No module named MyPackage
。它应该是
__init__.py
(名称__init__
,扩展名.py
)。然后它就会工作,您的项目结构和导入语句在其他方面是正确的。不过,还有一个小问题:还应该使用
lower_underscore
样式来命名包。包在Python中也是模块,它们应该遵循相同的命名约定。有关推荐的样式和命名约定的详细信息,请参见PEP8。不过,这只是一个惯例,与你的问题无关。相关问题 更多 >
编程相关推荐