簡體   English   中英

從不同目錄調用文件時如何指定導入路徑?

[英]How to specify an import path when the file is called from different directories?

我面臨與導入路徑有關的問題。 我有一個庫文件(func_a.py),如下所示。 從不同目錄調用該文件。 在這種情況下,如何在client.py中指定導入路徑?

.
├── main.py
└── package_a
    ├── __init__.py
    ├── client.py
    └── func_a.py

代碼如下:

$ cat package_a/func_a.py                                                                                                                                                                                                                        
def something():
    print('something')

$ cat package_a/client.py                                                                                                                                                                                                                       
import func_a

func_a.something()

$ cat main.py                                                                                                                                                                                                                                    import package_a.func_a as func_a
import package_a.client as client

func_a.something()

這是錯誤。 當我調用client.py時,文件丟失了func_a.py,因為當前目錄是根目錄,而不是package_a /。

$ python main.py                                                                                                                                                                                                                                     Traceback (most recent call last):
  File "main.py", line 2, in <module>
    import package_a.client as client
  File "/home/jef/work/test/package_a/client.py", line 1, in <module>
    import func_a
ModuleNotFoundError: No module named 'func_a'

我的Python是3.6。 謝謝您的幫助。

更新資料

盡管調用main.py可以,但是調用client.py失敗。 我都做。

$ cat client.py
from package_a import func_a

func_a.something()

$ python client.py        
Traceback (most recent call last):
  File "client.py", line 2, in <module>
    from package_a import func_a
ModuleNotFoundError: No module named 'package_a'
$ cat package_a/client.py
import func_a

^此導入語句不正確。 要從package_a包中導入func_a模塊,請改用以下import語句:

from package_a import func_a

您將需要確保包含package_a的目錄在sys.path可見。

暫無
暫無

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

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