簡體   English   中英

Python 從自己的模塊導入

[英]Python import from own module

我有一個結構為“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的header中,我有:

import hydro.read

在scenario_main.py中,我有:

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

問題是,當我嘗試從 package 根目錄運行 hydro_main.py 時,我收到以下錯誤:

ModuleNotFoundError: No module named 'hydro'

如何為“hydro”設置 package 名稱,以便在導入時引用 package 名稱? 我認為添加__init__.py應該初始化 package,但__package__仍然返回為None

您可以僅將整個模塊作為一個實例導入。

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

它是一個子模塊,所以你必須使用 parentModule.subModule.*。 您的第一行將更改為import scenario.hydro.read as read_hydro

場景/hydro/hydro_main.py

print("I am in hydro_main")

場景/hydro/read.py

print("I am in hydro read")

場景/hydro/write.py

print("I am in hydro write")

場景/read.py

print("I am in scenarios read")

場景/write.py

print("I am in scenarios write")

場景/scenarios_main.py

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

我在水電閱讀

我正在閱讀的場景中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM