Mey*_*sam 7 python linux pytest pyenv
我已安装pyenv并安装了不同版本的python:
$ pyenv versions
system
2.7.1
3.2.5
3.5.0
3.5.1
* 3.5.2
Run Code Online (Sandbox Code Playgroud)
我使用以下命令切换到python 3.5.2:
pyenv shell 3.5.2
当我检查python版本时,这就是我得到的:
$ python --version
Python 3.5.2
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时pytest,它仍然运行在python 2.7.6:
pytest -v
=============================================== =====================测试会话开始========================== ==========================================
platform linux2 - Python 2.7.6 ,pytest-3.0.3,py-1.4.31,pluggy-0.4.0 - /usr/bin/python
为什么pytest在旧版本下运行?
lin*_*gta 12
我发现了这个相关问题。对于他们来说,它是这样工作的:
python -m pytest tests/my_test.py
Run Code Online (Sandbox Code Playgroud)
我希望它有效
底线:跑
python -m pytest, 要么py.test-<version>如果你的替代Python和pytest系统包管理器一起安装,或者pyenv,请切换pyenv到该版本并确保已pytest安装.然后你就可以跑了pytest.
pip可执行文件也是正在切换的文件夹之一,因此您需要在安装之前 切换到备用Python pytest.我可以看到,/usr/bin/pytest(属于系统包管理器的python-pytest包)有一个shebang,!#/usr/bin/python因为它对应于系统python的安装.
pyenv,作为其README.md说,并不能取代/usr/bin/python- 因为它确实不应该被更换,以避免破坏系统的软件包.
相反,它将其目录添加到PATH并在那里插入一个启动器(称为" shim "),这是在您键入" python" 时调用的.正如你可能猜到的那样,这个hack被上面的shebang忽略了 - 就像它应该的那样.
python -m pytest将使其python自身启动时使用其安装中的包.pytest对于您的其他Python版本,可能包括PATH命名py.test-<version>(例如py.test-3或py.test-3.6)上的版本化可执行文件,具体取决于您安装它的方式.
python36-pytest- 几乎可以保证.pip,它只会创建一个无版本的可执行文件(尽管你可以自己创建一个版本化的版本).此外,如果您为不同的Python版本安装相同的软件包但具有相同的软件包--prefix,它将覆盖现有的可执行文件!pyenv建议的方式似乎是安装所有python感兴趣的版本和包~/.pyenv/versions.
/usr/local可以使用默认值.pip当前安装!)为该版本,所以调用这些脚本不带路径将运行这些垫片.
/usr/local只有您现在看到的结果.| 归档时间: |
|
| 查看次数: |
6307 次 |
| 最近记录: |