无法导入 Python 模块



我在falcon中有一个服务器和一个测试模块,但是在运行测试用例时我无法将服务器模块导入测试模块。

这是我的层次结构:

project
   |
    --__init__.py
    --server.py
   |
     /tests
        |
          --__init__.py
          -- apitest.py

这是我的测试代码

"""
Unit test for Ping api resource
"""
from falcon import testing
import pytest
import server
@pytest.fixture(scope='module')
def client():
    return testing.TestClient(server.api)
def test_get_message(client):
    result = client.simulate_get('/api/ping')
    assert result.status_code == 200

但是当我运行它时,它显示:

Traceback:
apiTest.py:7: in <module>
    import server
E   ImportError: No module named 'server'

我在这里做错了什么。

Python 仅在脚本的当前路径中检查模块,在您的情况下是 /tests .您还需要在路径中添加/project。以下代码片段应该有效:

import sys
sys.path.append("../")
import server

首先,您必须将项目目录添加到 PYTHONPATH 或将项目放在已添加的目录中。这让python可以使用你的包。

您可以使用 cmd 上的set命令添加目录。例如,如果要添加C:Python使用命令set PYTHONPATH = C:Python

现在要导入server.py您必须键入 import project.serverfrom project import server .

如果您键入 import project.server ,要在服务器中使用函数,您必须输入project.server.<fuction>(),如果您使用了from project import server则必须使用 server.<function>()

最好的解决方案是让你的包可安装,而不是摆弄PYTHONPATH。请参阅此处的 python 打包指南:https://packaging.python.org/tutorials/packaging-projects/

相关内容

  • 没有找到相关文章

最新更新