Is it possible to use tox with conda-based Python installations?
Yes, you need the conda version of virtualenv
installed for this to work.
Try to execute:
conda install virtualenv
virtualenv 15.1.0 py36_
Change to project directory containing tox.ini
and execute:
tox
While tox can't make use of conda, you can use conda to "install" different Python versions where tox can find them (like it would find "normal" Python installations in those folders). The following is tested on Windows:
- You need
virtualenv
installed viapip
in the root conda environment. I suspect this is the virtualenv that will be used by tox. (I had to install virtualenv usingpip install virtualenv
to get thevirtualenv
command to work, even thoughconda list
showed it as installed.) - Install the Python versions you want to test. This is easily done using
conda create
.tox
will autodetect Python binaries on Windows inC:\python27
,C:\python33
, etc., so create environments usingconda create -p C:\python27 python=2.7
etc.
The tox-conda plugin should close that gap nowadays, but needs contributors who actively use conda to test and improve it.
from the README:
tox-conda
is a plugin that provides integration with the conda package and environment manager for the tox automation tool. It's like having your cake and eating it, too!By default,
tox
creates isolated environments using [virtualenv](https://virtualenv.pypa.io] and installs dependencies frompip
.In contrast, when using the
tox-conda
plugintox
will useconda
to create environments, and will install specified dependencies fromconda
. This is useful for developers who rely onconda
for environment management and package distribution but want to take advantage of the features provided bytox
for test automation.
To install that plugin it needs to be installed alongside tox in the same virutal environment. To create a virtual environment containing tox
and tox-conda
this should suffice:
$ python3 -m venv toxbase
$ toxbase/bin/pip install tox tox-conda
[...]
Successfully installed tox-3.13.2 tox-conda-0.2.0
$ toxbase/bin/tox --version
3.13.1 imported from /home/ob/tmp/toxbase/lib/python3.6/site-packages/tox/__init__.py
registered plugins:
tox-conda-0.2.0 at /home/ob/tmp/toxbase/lib/python3.6/site-packages/tox_conda/plugin.py
from then on tox can be used as a command line tool and kept current by upgrading it in the toxbase
virtualenv. Another, more automated way would be to use pipx