pyenvを使用している環境で、toxで複数バージョンのテストをするときはまったのでそのメモです。
tox.ini
に以下のように設定しておき、toxでテストを実行しました。
[tox] envlist = py36, py37 [testenv] deps = pytest commands = pytest
$ tox GLOB sdist-make: /my-project/setup.py py36 create: /my-project/.tox/py36 ERROR: InterpreterNotFound: python3.6 py37 create: /my-project/.tox/py37 py37 installdeps: pytest ... _______________________________________ summary ________________________________________ ERROR: py36: InterpreterNotFound: python3.6 py37: commands succeeded
Python3.7では正常終了しましたが、3.6では仮想環境が作れずエラーとなりました。
このときのpyenvの環境は以下のようになっており、3.6もインストールされている状態です。
$ pyenv versions system 3.6.10 * 3.7.6 (set by /Users/username/.pyenv/version)
3.6の環境が見つけられないということで、.python-version
に2つのバージョンを記載します。
$ vim .python-version 3.6.10 3.7.6
pyenv versions
でも両方にチェックがつきました。
$ pyenv versions system * 3.6.10 (set by /my-project/.python-version) * 3.7.6 (set by /my-project.python-version)
再度、実行してみます。
$ tox GLOB sdist-make: /my-project/setup.py py36 create: /my-project/.tox/py36 py36 installdeps: pytest ... _______________________________________ summary ________________________________________ py36: commands succeeded py37: commands succeeded congratulations :)
両方の環境で実行できました。
まとめ
pyenv + toxで複数バージョンのテストを行うには、使用するバージョンすべてを.python-version
に書いておく。