从自己的模块导入Python

时间:2020-06-09 18:14:32

标签: python

我有一个结构为'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的形式返回。

2 个答案:

答案 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

scenarios / hydro / hydro_main.py

print("I am in hydro_main")

scenarios / hydro / read.py

print("I am in hydro read")

scenarios / hydro / write.py

print("I am in hydro write")

scenarios / read.py

print("I am in scenarios read")

scenarios / write.py

print("I am in scenarios write")

scenarios / scenarios_main.py

import scenarios.hydro.read as read_hydro
import scenarios.read as read_scenarios

我在水读中

我正在阅读情景

相关问题