2024-04-28 20:16:55 发布
网友
我有一个这样的文件夹结构
App --App --app.py --Docs --Tests --test_app.py
在我的test_app.py file中,我有一行代码要导入我的应用程序模块。当我在根文件夹上运行py.test时,我得到一个关于没有名为app的模块的错误。我应该如何配置?
test_app.py file
使用Python 3并在类似的项目布局上获得相同的错误,我通过将__init__文件添加到我的tests模块来解决这个问题。
__init__
tests
$ touch tests/__init__.py
我不擅长打包和导入,但我认为这有助于pytest确定目标App模块的位置。
pytest
App
我已经在/App/App目录中有一个__init__.py文件,并且希望从项目根目录运行测试,而不使用任何路径损坏魔法:
/App/App
__init__.py
python -m pytest tests
输出立即如下所示:
➟ python -m pytest tests ====================================== test session starts ====================================== platform linux -- Python 3.5.1, pytest-2.9.0, py-1.4.31, pluggy-0.3.1 rootdir: /home/andrew/code/app, inifile: plugins: teamcity-messages-1.17 collected 46 items ... lines omitted ... ============================= 44 passed, 2 skipped in 1.61 seconds ==============================
所以您正在从/App运行py.test。你确定/App/App在你的$PYTHONPATH中吗?
/App
py.test
$PYTHONPATH
否则,试图import app的代码将失败,并显示这样的消息。
import app
EDIT0:为了完整起见,我在下面的评论中包含了这些信息。
只有在/App/App内部执行应用程序时,尝试导入应用程序才会成功,而这里不是这样。您可能希望通过将__init__.py放入/App/App包中来使/App/App成为一个包,并将您的导入更改为将应用程序限定为from App import app。
from App import app
EDIT1:根据请求,从下面的第二条评论中添加进一步的解释。
通过将__init__.py放入/App/App中,该目录将成为一个包。这意味着您可以从它导入,只要它-目录-在$PYTHONPATH中可见。一、 如果/App在$PYTHONPATH中,您可以从App import app开始。您当前的工作目录将自动添加到$PYTHONPATH,因此当您从/App运行脚本时,导入将工作。
App import app
使用Python 3并在类似的项目布局上获得相同的错误,我通过将
__init__
文件添加到我的tests
模块来解决这个问题。我不擅长打包和导入,但我认为这有助于
pytest
确定目标App
模块的位置。我已经在
/App/App
目录中有一个__init__.py
文件,并且希望从项目根目录运行测试,而不使用任何路径损坏魔法:输出立即如下所示:
所以您正在从
/App
运行py.test
。你确定/App/App
在你的$PYTHONPATH
中吗?否则,试图
import app
的代码将失败,并显示这样的消息。EDIT0:为了完整起见,我在下面的评论中包含了这些信息。
只有在
/App/App
内部执行应用程序时,尝试导入应用程序才会成功,而这里不是这样。您可能希望通过将__init__.py
放入/App/App
包中来使/App/App
成为一个包,并将您的导入更改为将应用程序限定为from App import app
。EDIT1:根据请求,从下面的第二条评论中添加进一步的解释。
通过将
__init__.py
放入/App/App
中,该目录将成为一个包。这意味着您可以从它导入,只要它-目录-在$PYTHONPATH
中可见。一、 如果/App
在$PYTHONPATH
中,您可以从App import app
开始。您当前的工作目录将自动添加到$PYTHONPATH
,因此当您从/App
运行脚本时,导入将工作。相关问题 更多 >
编程相关推荐