我知道这个问题在这里已经被问了很多次,而且我可能已经阅读了大部分答案(包括这个和那个),还有Python文档,但是我仍然找不到解决我非常简单的导入问题的答案。这么简单以至于我一定错过了某些愚蠢的东西,但我还没有看到它。
我已经设置了以下结构:
myproject
myscript.py
MyPackage
__init.py__
mymodule.py
我只想从myscript.py
(或命令行Python解释器,它应该是相同的)加载mymodule.p
。
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
我已经尝试过的:
- 我在OSX和Ubuntu Linux下尝试了所有可能减少Python安装错误可能性的方法。
- 我将
PYTHONPATH
环境变量设置为myproject
目录以及.
和两者都设置。 - 我留空了
__init.py__
。 - 我还尝试从
myproject
目录启动的Python解释器中导入语句。 我尝试了以下导入语句:
from MyPackage import mymodule import MyPackage.mymodule import MyPackage.mymodule as module
所有尝试都失败了(相同的错误信息)。
如果我将
mymodule.py
放在项目目录中而不使用包,导入可以正常工作。但我不明白为什么从子包中导入不起作用。 有没有办法让它工作呢?感谢帮助!
MyPackage
之前,您需要验证myproject
目录是否列在sys.path
中。sys.path
是否包含正确的目录? - Martijn Pietersimport sys
和print sys.path
,它会显示一个包含“myproject”目录路径的列表:['', '/Users/michael/Entwicklung/python/myproject', ... ]
。 - mhelwig__init__.py
文件了。你能再试一次吗,但请确保删除所有的*.pyc
文件。也许在__init__.py
中添加一行单独的print "imported"
语句。 - Martijn Pieters