无法导入Python模块

时间:2019-05-31 06:07:39

标签: python python-3.x pytest python-module falconframework

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

这是我的等级结构:

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'

我在做什么错了。

3 个答案:

答案 0 :(得分:0)

Python仅在脚本的当前路径(在您的情况下为/tests)中检查模块。您还需要在路径中添加/project。以下代码段应该起作用:

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

import server

答案 1 :(得分:0)

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

您可以在set上使用cmd命令添加目录。例如,如果您想添加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>()。 / p>

答案 2 :(得分:0)

最好的解决方案是使您的软件包可安装,而不是摆弄PYTHONPATH。在此处查看python打包的准则:https://packaging.python.org/tutorials/packaging-projects/