テクめも

プログラミング関連のちょっとしたTipsなどを書いています。

pyenv + toxで複数バージョンのテストを行う

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に書いておく。