簡體   English   中英

如何在 Python3 中將子模塊導入到包的 __init__.py 中?

[英]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 你沒有導入.mymodmymod

暫無
暫無

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

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