Skip to main content

Generate requirements[-dev].txt from Pipfile using pipenv

Project description

https://travis-ci.org/gsemet/pipenv-to-requirements.svg?branch=master Pypi package MIT licensed

Generate requirements[-dev].txt from Pipfile (using pipenv). Used in my modern Python module project cookiecutter. template.

Rational

Pipfile and its sibling Pipfile.lock are clearly superior tools defining clear dependencies or a package. Pipfile is to be maintained by the package’s developer while Pipfile.lock represent a clear image of what is currently installed on the current system, guarantying full reproductibility of the setup. See more information about Pipfile format here. Most of the time, Pipfile.lock should be ignored (ie, not tracked in your git) for packages published on Pypi.

pipenv is a great tool to maintain Pipfile, but developers might be stuck with backward compatibility issues for tools and services that still use requirements.txt and does not know how to handle Pipfile or Pipfile.lock yet.

For examples:

  • Read the Docs

  • Pyup (experimental support is arriving )

  • Any library that uses PBR (*)

  • pip install (if you install a package with pip that does not have a requirements.txt, its dependencies won’t be installed, even if you use Pipfile)

(*): for the moment, I recommend to generate at least requirements.txt (without version freeze) for the libraries using PBR that you publish on Pypi. Remember PBR automatically synchronize the content of requirements.txt found at the root of a package with setup.py of this package. This allows automatic installation of the very dependencies of your package. Without this file, your package will be installed by pip, but its dependencies will be ignored. Support in PBR may be added in the future (see this this patch ).

Usage

Just before building source/binary/wheel package of your python module, only of the following commands:

  • To generate requirements files (ie, dependencies are described eventually by range), typically for libraries:

    pipenv run pipenv_to_requirements
  • To generate frozen requirements (ie, all dependencies have their version frozen), typically for applications:

    pipenv run pipenv_to_requirements -f

It will generate requirements.txt and, if applicable, requirements-dev.txt, in the current directory.

  • Also possible:

    pipenv run pipenv_to_requirements -d requirements-dev-custom.txt
    pipenv run pipenv_to_requirements -d requirements-dev-custom.txt -f
    pipenv run pipenv_to_requirements -o requirements-custom.txt
    pipenv run pipenv_to_requirements -o requirements-custom.txt -f
    pipenv run pipenv_to_requirements  -d requirements-dev-custom.txt -o requirements-custom.txt -f

Example using a Makefile:

dev:
    pipenv install --dev
    pipenv run pip install -e .

dists: requirements sdist bdist wheels

requirements:
    # For a library, use:
    pipenv run pipenv_to_requirements
    # For an application, use:
    # pipenv run pipenv_to_requirements -f

sdist: requirements
    pipenv run python setup.py sdist

bdist: requirements
    pipenv run python setup.py bdist

wheels: requirements
    pipenv run python setup.py bdist_wheel

Just use make requirements to refresh the requirements.txt.

Read the Docs

Simply commit these files in your tree so that Read the Rocs, and ensure they are synchronized each time you change your Pipfile. Do not forget to ask Read the Docs to use requirements-dev.txt when building the documentation.

Contributing

Create your development environment with

$ make dev

Execute unit tests:

$ make test

Code formatter:

$ make style

Code Style Checks:

$ make check

Project details


Download files

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

Source Distribution

pipenv-to-requirements-0.8.1.dev1.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

pipenv_to_requirements-0.8.1.dev1-py2.py3-none-any.whl (11.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pipenv-to-requirements-0.8.1.dev1.tar.gz.

File metadata

  • Download URL: pipenv-to-requirements-0.8.1.dev1.tar.gz
  • Upload date:
  • Size: 28.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4

File hashes

Hashes for pipenv-to-requirements-0.8.1.dev1.tar.gz
Algorithm Hash digest
SHA256 a6c0e9d200f150a053feed0b9ef9e8dd2a2f32702e2e8b193adc7291cb4b526e
MD5 dbaa9e9a8db4c0df43856718802be9c2
BLAKE2b-256 4aff184a25764a2397a04fecdff8afae862cb85afa74b805ee09a1a38fd95ceb

See more details on using hashes here.

File details

Details for the file pipenv_to_requirements-0.8.1.dev1-py2.py3-none-any.whl.

File metadata

  • Download URL: pipenv_to_requirements-0.8.1.dev1-py2.py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.4

File hashes

Hashes for pipenv_to_requirements-0.8.1.dev1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5b77ef9826a0bf2de08d2a5121c8b27b64c93a4bb656b670a3d4067f2c1e1fdf
MD5 51481d5cdefab937e563d270e34ffbea
BLAKE2b-256 1d92cd4dedf6d10570fcdabc7dbbd72a4303215b4d3eb996c1d28cfe0bd12163

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page