[英]Python import package with and without it's namespace
我有一个名为sound
的软件包,其目录结构如下:
sound/
|-- __init__.py
|-- interpreter.py
|-- blast.py
在获得软件包之前, interpreter.py
将使用命令import blast
导入blast.py
。 现在,对于该软件包,我不得不说import sound.blast as blast
。
尽管我对此不介意,但我希望既可以使用该语句将sound
包导入其目录之外,也可以直接运行interpreter.py
。 但是,如果我直接运行interpreter.py
,则会收到导入错误,提示该sound
不存在。
我当前的解决方案是这样的:
try:
import sound.blast
except ImportError:
import blast
但这感觉很难看。 有更好的解决方案吗?
另一个解决方法是。
将以下行中的“ try import”语句替换为interpreter.py文件。
import sys
sys.path.append("..")
import sound.blast
因此,父目录也将包含在路径中,然后在声音目录中导入sound.blast不再是问题。
希望能帮助到你
对于我程序中更复杂的名称空间, sys.path.append("..")
方法实际上无法正常工作。 我解决它的最好方法是:
if __package__ == 'sound':
import sound.blast
else:
import blast
然后可以使用更复杂的名称空间,例如sound.blast.driver.specification
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.