我正在构建一个python项目,目前我有2个模块dr
和mg
。
我已经对这两个模块做了完全相同的事情,但dr
可以导入main.py
,而mg
则无法导入。{/ p>
>>> from mg import visualization as vl
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mg
>>> from dr import simulation as sm
>>>
我已将 dr
和mg
个文件夹添加到PYTHONPATH
,如文件夹名称上的小绿色加号所示。
哪里出错?
答案 0 :(得分:2)
我已将
dr
和mg
个文件夹添加到PYTHONPATH
等待!你应该不这样做。由于mg
和dr
是包,因此您应将父文件夹添加到PYTHONPATH
,即示例中的traclus
文件夹。
当python查找包a
时,它将查看PYTHONPATH
中包含a
文件的名为__init__.py
的目录中的所有目录。
如果您将a
目录添加到PYTHONPATH
,解释程序将会看到__init__.py
,但它不知道它是程序包的一部分。
答案 1 :(得分:0)
它更多评论然后回答,但评论不能格式化。我想,mg/__init__.py
中存在问题。下面我尝试模拟你的问题。一切正常:
$ tree -sv
.
├── [ 4096] dr
│ ├── [ 0] __init__.py
│ └── [ 25] simulation.py
├── [ 97] main.py
└── [ 4096] mg
├── [ 0] __init__.py
└── [ 28] visualization.py
2 directories, 5 files
$ cat mg/visualization.py
print "visualization module"
$ cat dr/simulation.py
print "simulation module"
$ cat main.py
from mg import visualization as vl
from dr import simulation as sm
print dir(vl)
print dir(sm)
$ python main.py
visualization module
simulation module
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
['__builtins__', '__doc__', '__file__', '__name__', '__package__']