簡體   English   中英

ImportError:如何導入 python 模塊?

[英]ImportError: How do I import a python module?

我嘗試導入 Python 模塊但失敗了。 這是我的文件夾層次結構:

package/
  folder/
    a.py
  utils/
    b.py

在模塊a.py ,我嘗試導入b.py但收到ImportError

如何使用 function test從模塊ba.py

文件:

一個.py

def usetest():
    test()

b.py

def test():
    print("hello world")

可以使用幾種不同的語法導入 Python 模塊:

  • 一個簡單的import...語句: import package.utils.b現在將允許您使用package.utils.b.test() 不幸的是它很長。
  • import... as...語句: import package.utils.b as b會讓您使用b.test()
  • from... import...語句: from package.utils.b import test將讓您使用test()
  • from... import... as...語句: from package.utils.b import test as test_me將讓您使用test_me()

所有這些選項都將運行完全相同的 function。嘗試將它們放在a.py的頂部。

指定整個路徑, package.utils.b稱為絕對形式。 您還可以以相對形式導入:

  • import..utils.b as b會讓你使用b.test() 注意開頭的 2 個點,表示go up one folder
  • from..utils.b import test會讓你使用test()
  • from..utils.b import test as test_me會讓你使用test_me()

開頭的每個點指定 go 向上一個文件夾,除了一個,上面寫着“這個文件夾”。

如果您嘗試運行的主文件在 package ( a.py ) 中,您應該切換到包含 package 的目錄,並使用-m運行該文件。 在您的情況下,切換到包含package的目錄,然后運行python -m package.folder.a

有關導入模塊的更多信息,請參閱Python 文檔

您還可以使用完整路徑動態導入 Python 模塊。 它更高級,不會在此答案中涵蓋。

package/ 
  folder/
    a.py
  utils/
    b.py

進口:

如果 package 是您的主文件夾,則使用以下語法導入模塊。

import utils.b as b
b.test() 
**or** 
from utils import b
**or**
To import only method
from utils.b import test
**or**
with alias name
from utils.b import test as my_test (my_test is the method alias name)

進口:

import folder.b as b b.test() or from folder.b import test or with alias name from folder.b import test as my_test (my_test 是別名)

如果您嘗試運行的主文件在 package (a.py) 中,您應該切換到包含 package 的目錄,並使用-m運行該文件

暫無
暫無

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

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