我有一个像Python项目的目录结构如下:
my_project
|_
...
dirA
|_
__init__.py
scriptA.py
dirB
|_
__init__.py
scriptB.py
...
__init__.py
的{{1}}内dirA
__init__.py
为空,我有:
dirB
在import os
import glob
__all__ = [os.path.basename(f)[:-3] for f in glob.glob(os.path.dirname(os.path.abspath(__file__)) + "/*.py")]
内,我这样做:
scriptB.py
随后使用导入的代码工作正常。
然后,我将整个项目(使用不同的项目目录名:from dirA import *
)复制并粘贴到与旧项目相同的目录中,然后我开始在此更改my_project_new
的代码重复的目录。 (注意:scriptA.py
的目录结构与上面完全相同)。
进行更改后,我尝试运行my_project_new
scriptB.py
,我发现它一直从原始my_project_new
目录导入dirA
,而不是当前my_project
目录中的dirA
。这是为什么?
此外,我将原始my_project_new
文件夹移至其他位置,并尝试再次运行my_project
scriptB.py
。然后它无法完全识别my_project_new
。现在发生了什么?
答案 0 :(得分:2)
我会评论,但我没有足够的声誉。希望我的猜测是正确的。
是否有__init__.pyc
个文件?也许当它编译字节码时,它存储了导入的绝对路径。尝试删除.pyc文件并导入。