无法从requirements.txt安装pytest

时间:2018-03-13 14:44:53

标签: python python-3.x pip pytest pytest-cov

我正在使用pip3为我的python项目安装模块。我的requirements.txt看起来像这样:

urllib3==1.22
cx_freeze==6.0b1
pytest==3.2.2
pytest-cov==2.5.1
pytest-dependency==0.2

我显然已将pytest添加到我的要求中,但当我运行pip3 install -r requirements.txt时,找不到pytest并显示以下异常:

Complete output from command python setup.py egg_info:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-y300zryw/pytest-dependency/setup.py", line 9, in <module>
    import pytest_dependency
  File "/tmp/pip-build-y300zryw/pytest-dependency/pytest_dependency.py", line 8, in <module>
    import pytest
ModuleNotFoundError: No module named 'pytest'

当我手动执行pip3 install pytest然后运行我的需求文件时,它可以正常工作。

为什么pytest不能从requirements.txt安装?

2 个答案:

答案 0 :(得分:2)

为您的pytest-cov个版本需要pytest==3.4.2 如此简单地编辑requirements.txt

urllib3==1.22
cx_freeze==6.0b1
pytest==3.4.2
pytest-cov==2.5.1
pytest-dependency==0.2

它第一次帮助我,但现在它甚至可以用于3.2.2

$ workon ptest

(ptest) $ python -V
Python 3.5.3

查看已安装的

(ptest) $ pip freeze
attrs==17.4.0
coverage==4.5.1
pluggy==0.6.0
py==1.5.2
six==1.11.0

安装

(ptest) $ cat requirements.txt 
urllib3==1.22
cx_freeze==6.0b1
pytest==3.2.2
pytest-cov==2.5.1
pytest-dependency==0.2

(ptest) $ pip install -r requirements.txt 
Collecting urllib3==1.22 (from -r requirements.txt (line 1))
  Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting cx_freeze==6.0b1 (from -r requirements.txt (line 2))
Collecting pytest==3.2.2 (from -r requirements.txt (line 3))
  Using cached pytest-3.2.2-py2.py3-none-any.whl
Collecting pytest-cov==2.5.1 (from -r requirements.txt (line 4))
  Using cached pytest_cov-2.5.1-py2.py3-none-any.whl
Collecting pytest-dependency==0.2 (from -r requirements.txt (line 5))
Requirement already satisfied: setuptools in /home/user/.virtualenvs/ptest/lib/python3.5/site-packages (from pytest==3.2.2->-r requirements.txt (line 3))
Requirement already satisfied: py>=1.4.33 in /home/user/.virtualenvs/ptest/lib/python3.5/site-packages (from pytest==3.2.2->-r requirements.txt (line 3))
Requirement already satisfied: coverage>=3.7.1 in /home/user/.virtualenvs/ptest/lib/python3.5/site-packages (from pytest-cov==2.5.1->-r requirements.txt (line 4))
Installing collected packages: urllib3, cx-freeze, pytest, pytest-cov, pytest-dependency
Successfully installed cx-freeze-6.0b1 pytest-3.2.2 pytest-cov-2.5.1 pytest-dependency-0.2 urllib3-1.22

检查

(ptest) $ pip freeze
attrs==17.4.0
coverage==4.5.1
cx-Freeze==6.0b1
pluggy==0.6.0
py==1.5.2
pytest==3.2.2
pytest-cov==2.5.1
pytest-dependency==0.2
six==1.11.0
urllib3==1.2

答案 1 :(得分:1)

问题在于你拥有的pytest-dependency版本 - 0.2太旧了。您无法使用pytest-dependency==0.2

一次性安装pytest
$ pip install pytest-dependency==0.2 pytest

会失败。

但是,此问题已在0.3版本中修复,请参阅issue #13issue #14已关闭。所以只需将pytest-dependency发送到当前版本,您就可以了:

urllib3==1.22
cx_freeze==6.0b1
pytest==3.2.2
pytest-cov==2.5.1
pytest-dependency==0.3.2