kennethreitz-archive / envy

Licence: other
[WIP] Python Projects Environment Tool.

Programming Languages

python
139335 projects - #7 most used programming language

Envy: Python Environment Manager

Current status:

  • virtualenv: containerization
  • pip: installs dependencies

Future:

  • python-build: bootstraps pythons
  • pyenv: defines dependencies, installs dependencies with pip, bootstraps virtualenvs with new pythons, generates requirements.txt (like a lockfile), allows cleaning/restarts of virtualenvs

Purpose

  • Standarization. Virtualenvs always in .venv (or similar), requirements.txt for dependencies. Establish a way to define which version of Python is required for an application.
  • requirements.txt generation.
  • Standardized virtualenv locations remove alot of boilerplate documentation.
  • Add another version of Python. Not a big deal.
  • Rebuild virtualenvs all the time. Not a big deal.

Possible Usage

pyenv install: Recursively finds Envfile, and bootstraps virtualenv in .venv relative to that. If Python defined isn't available, uses python-build to provide that as well. Defined python defaults to simply python.

pyenv init: Activates the virtualenv. Useful shortcut.

pyenv freeze: Generates requirements.txt, based on Envfile.

pyenv clean: Removes dependency cruft from a virtualenv.

pyenv clean --hard: Rebuilds the virtualenv from scratch.

Example Envfile

Name to be determined. Yaml? package.cfg?:

# stuff
python: pypy-1.6
module: requests >= 0.9
module: clint

pyenv freeze would result in the following requirements.txt:

# Python: pypy-1.6

# From module: requests >= 0.9
certifi==0.0.6
requests==0.9.1

# From module: clint
clint==0.3.1
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].