[英]Importing From Another Script in Python
我的目錄是這樣的:
isds:
__init__.py
jobs:
__init__.py
adhoc:
__init__.py
test.py
test2.py
我的兩個文件看起來像這樣。
測試.py:
import sys
x = 10
測試2.py:
import sys
from isds.jobs.adhoc.test import *
print(x)
當我從與 test2.py 相同的目錄中運行“python3 test2.py”時,出現此錯誤:ModuleNotFoundError: No module named 'isds.jobs.adhoc.test'
為什么會這樣? 我有init .py 文件,我想我的絕對導入語句是正確的......但也許不是?
謝謝!
由於您是從同一目錄導入模塊,因此您可以簡單地導入使用。
from test import *
為了作為包導入,您需要將文件作為包運行,因此您將導航到包含 isds` 的文件夾並運行:
python -m isds.jobs.adhoc.test2
這將文件作為模塊而不是腳本運行,並且由於它在使用自己的導入的同一級別被索引,因此您正在使用的導入機制按預期工作。
如果你想支持作為腳本運行或作為模塊運行,你需要這樣的東西:
try:
from isds.jobs.adhoc.test import *
except ModuleNotFoundError:
from test import *
但這可能會導致其他問題,例如,如果發生未找到不同模塊的錯誤,然后import test
最終完全導入其他內容,您可能會得到令人困惑和誤導性的錯誤消息,因此我通常建議只使用-m
運行所有內容如果您正在編寫包,請標記。
另請注意,此方法在 python 3.7,4
無需任何__init__.py
文件3.7,4
。 我相信不久前刪除了添加空 init 文件的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.