我有一个名为sound
的包,其目录结构如下:
sound/
|-- __init__.py
|-- interpreter.py
|-- blast.py
在我收到包裹之前,interpreter.py
会使用blast.py
命令导入import blast
。现在有了这个包,我不得不说import sound.blast as blast
。
虽然我不介意这一点,但我希望能够同时使用该语句将sound
包导入到其目录之外,还能运行{{ 1}}直接。但是,如果我直接运行interpreter.py
,则会收到导入错误,指出interpreter.py
不存在。
我目前的解决方案是这样的:
sound
但这感觉很难看。对此有更好的解决方案吗?
答案 0 :(得分:1)
另一种解决方法是。
将以下行中的“try import”语句替换为interpreter.py文件。
import sys
sys.path.append("..")
import sound.blast
因此,父目录也将包含在路径中,然后在声音目录中导入sound.blast将不再是一个问题。
希望有所帮助
答案 1 :(得分:0)
sys.path.append("..")
方法在我的程序中对于更复杂的命名空间实际上没有正常工作。我解决它的最好方法是:
if __package__ == 'sound':
import sound.blast
else:
import blast
然后更复杂的命名空间工作,例如sound.blast.driver.specification