设想
从一个包让我们说beta
:
修改后sys.path
,导入一个包alpha
然后恢复sys.path
. 我尝试导入一个data_provider
同时存在于alpha
和beta
问题是:即使 sys.path 现在没有's 目录的痕迹,data_provider
in也会alpha
被选中beta
alpha
问题:sys.path
这是一个错误,还是python 在尝试导入模块时查看的其他地方(可能是缓存)
代码
import os, sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),"src"))
sys.path.insert(0, '../alpha')
import alpha
sys.path.remove('../alpha')
import data_provider as dp
print(sys.path)
print(dp.__file__)
完整的代码库可以在这里找到