Python导入错误,即使使用了_init__u;.py文件

Python导入错误,即使使用了_init__u;.py文件,python,Python,我在S1下有3个目录 S1 - D1 --python1.py - D2 --python2.py - D3 --python3.py 在python3.py模块中,我有一条语句(如下)要导入python2.py import D2.python2 当我运行python3.py时,我得到一个错误“没有名为D2.python2的模块” 如何解决此问题 注意:我在所有目录中都有表示包的\uuuu init\uuuuu.py。您需要确保您

我在S1下有3个目录

S1
   - D1
       --python1.py
   - D2
       --python2.py
   - D3
       --python3.py
在python3.py模块中,我有一条语句(如下)要导入python2.py

import D2.python2
当我运行python3.py时,我得到一个错误“没有名为D2.python2的模块”

如何解决此问题


注意:我在所有目录中都有表示包的
\uuuu init\uuuuu.py

您需要确保您的
S1
目录位于python上,以便解释器知道如何加载它


最简单的方法是将其添加到
PYTHONPATH
环境变量中

S1在您的模块搜索路径上吗?我想您必须从..编写
。。导入D2.python2
,但python程序无法从高于其启动目录的目录导入,因此python3(带有python2 import语句)必须从s1(或更高)中的文件导入。是否更容易放置D1-,站点包中的D2和D3目录?鉴于
D*
具有相互依赖性,似乎
S1
是一个包;所以我宁愿把
S1
放在那里,而不是子包。无论哪种方式,在我看来,将个人代码放在站点包中都会不必要地将其与某个特定的python安装绑定在一起,这使得使用virtualenv变得很困难,而且通常不方便。我宁愿使用
PYTHONPATH
,或者如果打算在全系统范围内使用,那么在站点包中添加一个符号链接,而不仅仅是在那里安装它。