0

我正在构建一个 python 项目,我目前有 2 个模块drmg.

我对这两个模块做了完全相同的事情dr,但是可以导入main.py,而mg不能。

>>> 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
>>> 

从文件夹名称上的小绿色加号可以看出,我已将 drmg文件夹添加到其中。PYTHONPATH

在此处输入图像描述

哪里出错了?

4

2 回答 2

2

我已将drmg文件夹添加到PYTHONPATH

等待!你不应该这样做。由于mgdr是包,您应该将它们的文件夹添加到PYTHONPATH,即traclus您的示例中的文件夹。

当 python 查找一个包a时,它会查看包含一个文件的PYTHONPATH目录中的所有目录。如果您将目录添加到,解释器将看到,但它不会知道它是包的一部分。a__init__.pyaPYTHONPATH__init__.py

于 2013-10-04T05:42:59.150 回答
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__']
于 2013-10-03T10:03:27.507 回答