Skip to main content
Join the official Python Developers Survey 2018 and win valuable prizes: Start the survey!

A pipenv plugin for tox

Project description

tox-pipenv
==========

.. image:: https://img.shields.io/pypi/v/tox-pipenv.svg
:target: https://pypi.python.org/pypi/tox-pipenv

.. image:: https://img.shields.io/travis/tox-dev/tox-pipenv.svg
:target: https://travis-ci.org/tox-dev/tox-pipenv

.. image:: https://codecov.io/gh/tox-dev/tox-pipenv/branch/master/graph/badge.svg
:target: https://codecov.io/gh/tox-dev/tox-pipenv

.. image:: https://pyup.io/repos/github/tox-dev/tox-pipenv/shield.svg
:target: https://pyup.io/repos/github/tox-dev/tox-pipenv/
:alt: Updates

.. image:: https://pyup.io/repos/github/tox-dev/tox-pipenv/python-3-shield.svg
:target: https://pyup.io/repos/github/tox-dev/tox-pipenv/
:alt: Python 3

A tox plugin to replace the default use of virtualenv with Pipenv.

This is a convenient way to retain your use of Pipenv, whilst testing multiple versions of Python.

Installation
------------

.. code-block:: bash

pip install tox-pipenv

Or,

.. code-block:: bash

pipenv install tox-pipenv

Creating virtual environments
-----------------------------

With this plugin, tox will use `pipenv --python {python binary}` as given to the tox interpreter for each python path.

If you already have virtual environments cached with tox, use the --recreate flag to recreate them with pipenv.

Note: tox will pass the --site-packages flag to pipenv if this is configured in your tox config.

The Pipfile will exist in .tox/{env}/Pipfile as well as Pipfile.lock

Installing requirements
-----------------------

The installation of requirements from your tox config will be passed to pipenv install for installation into the virtual
environment. This replaces the use of pip within tox.

``requirements.txt`` files will also be parsed by Pipenv and used for each test environment

Executing tests
---------------

Each of the commands in your testenv configuration will be passed to pipenv to execute within the pipenv virtual environment

Example tox.ini
---------------

This simple example will test against Python 2.7 and 3.6 using pytest to execute the tests.

```
[tox]
envlist = py27, py36

[testenv]
deps =
pytest
pytest-mock
commands = python -m pytest test/
```

Frequently asked questions
--------------------------

Where to install
~~~~~~~~~~~~~~~~

Tox-Pipenv should be installed in the same environment as Tox, whether that is in a virtualenvironment, system environment or user environment. Tox-Pipenv depends on
Tox 3.0 or newer.

Is user expected to create `Pipfile` and `Pipfile.lock` before executing `tox` with this plugin?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Yes, although if you are migrating from a requirements.txt to a Pipfile, you can use Pipenv to create the Pipfile for you.

Is `Pipfile.lock` expected to be under source control?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

According to `pipenv` documenation, `Pipfile.lock` is not recommended under source control if it is going to be used under multiple Python versions.

What is the role of `requirements.txt` file?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Often, `tox` users use `requirements.txt` which is then referenced from within `tox.ini` file as deps. Pipenv will automatically install any packages listed in
`requirements.txt` for each virtual environment that Tox creates.

Is `tox.ini` `deps` section really in control?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

No, this is a known limitation.


Authors
-------

* Anthony Shaw
* Omer Katz

Release notes
=============

1.6.0 (2018-07-04)
------------------

* Bugfix : Tox would fail when executed twice if usedevelop was set to True, reported by @ashwinvis #46
* Bugfix : Any additional dependencies specified in `deps` within tox.ini would be written to the root Pipfile. A temporary Pipfile is created
for each virtualenv now, which is a clone of the root Pipfile

1.5.0 (2018-07-03)
------------------

* Update : Update tox to 3.0.0
* Feature : Tox report now uses pipenv instead of pip freeze
* Bugfix : Fixed issue on newer versions of pipenv raising error "AttributeError: 'Project' object has no attribute 'pipfile_sources'" (#41)

1.4.1 (2018-03-15)
------------------

* Removed test virtualenv from package, meaning distribution was 18MB, should be 15Kb #38

1.4.0 (2018-03-08)
------------------

* Bugfix : Fixed error "LocalPath object has no attribute endswith"
* Bugfix : Fixed error "Cannot run tox for the first time with this plugin installed"

1.3.0 (2018-03-03)
------------------

* Bugfix : fixed issue when Pathlib.Path occured instead of string
* Update : updated pipenv to 11.0.1

1.2.1 (2018-01-08)
------------------

* Added documentation and fixed pypi build

1.2.0 (2018-01-08)
------------------

* Virtual environments are now correctly stored in .tox/<pyver>/.venv
* Packages will be reported by pipenv graph after installation. Pip freeze is still being run, downstream PR raised in tox
* Plugin should not accidentally remove host virtualenv binaries

1.1.0 (2017-12-30)
------------------

* Use Pipenv install --dev as the default installation command

1.0.0 (2017-12-22)
------------------

* Support for creation and recreation of virtual environments using Pipenv
* Isolation of Pipfile within the tox directory
* Support for installation of tox-specified packages in Pipenv
* Support for execution of test commands within a Pipenv virtual env


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
tox_pipenv-1.6.0-py2.py3-none-any.whl (5.5 kB) Copy SHA256 hash SHA256 Wheel py2.py3 Jul 4, 2018
tox-pipenv-1.6.0.tar.gz (12.9 kB) Copy SHA256 hash SHA256 Source None Jul 4, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page