[英]What is the correct way to import modules/packages for Python projects with unit tests?
我有以下目錄結構:
|_ director_script.py
|_ app/
|_ __init__.py
|_ ParentClass.py
|_ my_module/
|_ __init__.py
|_ MyClass.py
|_ MyClassTestCase.py
在我的director_script.py
我使用MyClass
,當我運行python director_script.py
,腳本按預期運行,沒有任何錯誤。 但是,當我進入my_module
文件夾並使用python -m unittest MyClassTestCase
運行單元測試時,出現錯誤:
ModuleNotFoundError: No module named 'app'
這是由MyClass.py
中的import語句引起的,即
from app.ParentClass import ParentClass
當我從director_script.py
運行它時,這種導入很好,並且僅在單元測試中發生。
您應該從app文件夾之外運行,任何具有__init__.py
文件夾都是python中的子模塊。 如果將當前工作目錄設置為my_module,則它將看不到應用程序模塊,除非您具有與PYTHONPATH
環境變量中設置的應用程序文件夾相對應的文件夾路徑
在頂層文件夾中添加一個名為__init__.py
的文件
有點糾結,但這是我通常的做法:
import sys
sys.path.append('../app')
或在Windows下:
sys.path.append('..\\app')
當然,這需要在模塊導入之前進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.