我有一个结构为'hydro'的模块:
hydro/
__init__.py
read.py
write.py
hydro_main.py
这被用作其他几个模块的子模块,这些模块的脚本具有相似的名称:
scenarios/
__init__.py
read.py
write.py
scenarios_main.py
hydro/
__init__.py
read.py
write.py
hydro_main.py
为了保持脚本名称的整齐,我想在导入时指定模块名称。因此,在hydro_main.py的标题中,我将拥有:
import hydro.read
,在censs_main.py中,我将拥有:
import hydro.read as read_hydro
import scenarios.read as read_scenarios
问题是,当我尝试从软件包根目录运行hydro_main.py时,出现以下错误:
ModuleNotFoundError: No module named 'hydro'
如何设置'hydro'的软件包名称,以便可以在导入时引用该软件包名称?我以为应该添加__init__.py
来初始化程序包,但是__package__
仍会以None
的形式返回。
答案 0 :(得分:0)
您可以仅将整个模块作为一个实例导入。
import hydro
from hydro import read as read_hydro, hydro_main as main
hydro.hydro_main()
main() # same as above
hydro.read()
read_hydro() #same as above
答案 1 :(得分:0)
这是一个子模块,因此您必须使用parentModule.subModule。*。您的第一行将更改为导入情境。hydro.read为read_hydro
print("I am in hydro_main")
print("I am in hydro read")
print("I am in hydro write")
print("I am in scenarios read")
print("I am in scenarios write")
import scenarios.hydro.read as read_hydro
import scenarios.read as read_scenarios
我在水读中
我正在阅读情景