iT邦幫忙

0

Python 不同目录中的文件进行模块调用

  • 分享至 

  • xImage

目录结构:

TestProject
    ModuleFiles
        __init__.py
        Module1.py
    Profile
        __init__.py
        main.py
    test.py

在 main.py 文件中调用 Module1

from ModuleFiles import Module1

提示

ModuleNotFoundError: No module named 'ModuleFiles'

在 test.py 中使用相同的方式调用,可以正常调用,请问这个是怎么回事?

ccutmis iT邦高手 2 級 ‧ 2024-12-11 18:34:48 檢舉
試試
from ModuleFiles.Module1 import *
ccutmis iT邦高手 2 級 ‧ 2024-12-11 18:36:59 檢舉
如果是在 test.py 可試
from ModuleFiles.Module1 import *
-----
但在Profile目錄要去存取上層的ModuleFiles裡面的Module1 這個我沒試過
froce iT邦大師 1 級 ‧ 2024-12-11 22:54:43 檢舉
1. 用直接執行從 Profile.main要去調用ModuleFiles,沒做特殊處理是不可能的
當你執行(python Profile.main.py)時,python不會認為你的Profile是個package,你的專案資料夾不是TestProject,而是 TestProject/Profile了。 ModuleFiles和Profile被視為沒有任何關係。

2. 真的硬要的話
https://www.geeksforgeeks.org/python-import-module-from-different-directory/
簡單的說就是對sys.path下手,讓ModuleFiles被視為全域package

3. 但如果執行 test.py,你在 Profile.main 要 from ModuleFiles import Module1
這是可以的
對 test.py而言,這兩個package都是他的子package,所以可以互相存取。

總結:
python的import是對於被直接執行的.py檔案而言。被直譯器直接執行的檔案的所在資料夾是專案資料夾,同階層的目錄會被視為package,
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答