![](/img/trans.png)
[英]How to expose every name in sub-module in __init__.py of a package?
[英]How to import a sub-module into a package's __init__.py in Python3?
假設我有以下程序結構:
.
├── main.py
└── mypack
├── __init__.py
└── mymod.py
在mypack
package 中,可以使用以下語法在(子)模塊中導入對象: from.mymod import f
mypack/__init__.py
:
from .mymod import f
print(f'Hello: __name__: {__name__}, __package__: {__package__}, __file__: {__file__}')
但是,如果我嘗試導入完整的(子)模塊,則會收到以下語法錯誤:
import .mymod
Traceback (most recent call last):
File "main.py", line 1, in <module>
import mypack
File "/Users/nlykkei/python-demo/mypack/__init__.py", line 1
import .mymod
^
SyntaxError: invalid syntax
此外,如果我嘗試使用非相對語法導入模塊,它會失敗:
import mymod
Traceback (most recent call last):
File "main.py", line 1, in <module>
import mypack
File "/Users/nlykkei/python-demo/mypack/__init__.py", line 1, in <module>
import mymod
ModuleNotFoundError: No module named 'mymod'
如何將(子)模塊導入包的__init__.py
文件? 特別是,我只想導入模塊 object 而不是它包含的所有對象: from.mymod import *
。
程序 output :
$ python3 main.py
Hello: __name__: mypack.mymod, __package__: mypack, __file__: /python-demo/mypack/mymod.py
Hello: __name__: mypack, __package__: mypack, __file__: /python-demo/mypack/__init__.py
Hello: __name__: __main__, __package__: None, __file__: main.py
不確定我是否完全理解了這個問題,但也許:
from . import mymod
檢查您的__init__.py
文件
錯誤:
Traceback (most recent call last):
File "main.py", line 1, in <module>
import mypack
File "/Users/nlykkei/python-demo/mypack/__init__.py", line 1, in <module>
import mymod
ModuleNotFoundError: No module named 'mymod'
state 你沒有導入.mymod
但mymod
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.