我有一棵这样的树
src
__init__.py
my_app
__init__.py
db.py
config.py
tests
__init__.py
test_db.py
在db.py
中,我有一个这样的导入
from config import my_func
当我单独运行db.py(python /src/my_app/db.py)时,这很好用。
当我尝试用pytest运行它时,它说,在www.example.com文件中没有名为config的模块db.py。
import sys, os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from config import my_func
然后我从pytest得到一个错误,它说
from src.my_app.db import foo
"No module found named src"
虽然我相信这将得到否决遗忘,我只是不明白有什么问题。我看了几十个帖子,觉得我有这个权利,但显然不是
1条答案
按热度按时间6ojccjat1#
我建议避免使用任何
sys.path.insert
/sys.path.append
黑客。相反,请确保您的
PYTHONPATH
设置正确,它应该包括您的src
目录所在的路径。否则,src.my_app.db
导入将不会被解析。假设,您有以下
src
目录的路径:/Users/michael/py_project/src
您的
tests
目录位于以下路径:/Users/michael/py_project/tests
那么你的
PYTHONPATH
应该包括/Users/michael/py_project
路径。您可以通过运行以下命令来设置它:
在运行测试之前,请仔细检查
PYTHONPATH
是否设置正确:一旦设置了
PYTHONPATH
,您应该能够从/Users/michael/py_project
目录运行pytest tests
。