![](/img/trans.png)
[英]When importing from a python module is it a class that gets imported or a function?
[英]issue with nested python module importing when executing imported function itself
我相信這個問題一定已經被問過了,但我找不到我的問題的解釋,如果它是重復的,對不起。
Folder
├── Generator.py
└── modules
├── Function1.py
└── Subfunction.py
Generator.py 導入 Function1,Function1 導入 Subfunction。 Function1 必須能夠作為獨立程序和 Generator.py 的導入模塊運行
這本身不是問題,因為我使用if __ name__ == "__ main__":來識別調用類型。
但是程序在導入子函數時失敗,具體取決於我正在執行的代碼。
# Generator.py
import Function1
# Function1.py
import Subfunction
import modules.Subfunction
如果我執行 Function1.py,第一個工作,但如果我運行 Generator.py,它會失敗
如果我執行 Generator.py,第二個有效,但如果我運行 Function1.py,它會失敗
我認為導入和相對路徑與放置代碼的模塊有關,而不是從頂級調用者的角度來看。 我嘗試了import.modules.Function1和import.Function1但問題仍然存在。 是否有任何優雅的方法可以為兩種用途導入 Subfunction,或者我是否需要在 if name == main下包含 import 或將其捕獲在try/except中?
編輯:@Bastien B 的所有代碼
如果我執行 Function1.py 本身,它會以這種形式工作。 如果我執行 Generator.py,我得到 ModuleNotFoundError: No module named 'Function1'
# Generator.py
import Function1
print(Function1.Function1_return)
# Function1.py
def Function1_return():
return Subfunction.Subfunction_return()
import Subfunction
if __name__ == '__main__':
print(Function1_return())
# Subfunction.py
def Subfunction_return():
return "this is subfunction"
從我可以看到你的'如果名字......'不是問題。
如果您使用本地 venv,這應該可以正常工作:
生成器.py
from Folder.modules.function1 import Function1_return
print(Function1_return())
函數1.py
from Folder.modules.Subfunction import Subfunction_return
def Function1_return():
return Subfunction_return()
if __name__ == '__main__':
print(Function1_return())
子函數.py
def Subfunction_return():
return "this is subfunction"
根據您的文件結構,您可能需要稍微調整一下
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.