Yet another python environment
Project description
yapenv
Alpha
WARNING: This repo is still in alpha development phase and structure is subject to change.
Yet Another Python Environment manager (with less options).
Features
- Easy configuration via YAML files with optional inheritance.
- Named environments with per-environment configuration (test, dev, beta, prod, etc...).
- CLI interface with easy initialization.
NOTE: yapenv
uses the package bole to handle configuration and logging
Install
pip install yapenv
Run in your project directory
yapenv init
Configuration
By default yapenv
uses the following configuration file names.
.yapenv.yaml
.yapenv.yml
.yapenv
.yapenv.json
Core Configuration
python_version: "3.9" # Python version to use
python_executable: null # Path to python executable (overrides python_version)
venv_directory: .venv # Path to created virtualenv directory
pip_config_path: null # Path to the pip.conf file
inherit: false # Boolean, if true inherit parent directory's yapenv configuration
environments: [] # Optional environments, see environment configs
# These values are inherited from and overwritten by environment configuration
env_file: .env # Env file to load when running commands
pip_install_args: [] # List of arguments for pip install command
virtualenv_args: [] # list of arguments for virtualenv command
requirements: [] # List of requirements (see requirement configuration)
Environment Configuration
Enabled by using --env <environment_name>
argument.
environments:
dev: # Environment name
env_file: .env # Env file to load when running commands
pip_install_args: [] # List of arguments for pip install command
virtualenv_args: [] # list of arguments for virtualenv command
requirements: [] # List of requirements (see requirement configuration)
Requirement Configuration
requirements:
- package: mypackage # Pip package name string
- myotherpackage==0.0.1 # Pip package name string
- import: requirements.txt # Path to requirements.txt to import
Environment Variables
YAPENV_ENV_FILE
: Env file to load when running commands (default=.env
).YAPENV_FULL_ERRORS
: Boolean that tellsyapenv
to dump full traceback (default="false"
).YAPENV_CONFIG_FILES
: Array of yapenv config file names (default=".yapenv.yaml .yapenv.yml .yapenv .yapenv.json"
).NO_COLOR
: Boolean that disables colorized logging output (default="false
")VIRTUAL_ENV
: File path of python virtualenv (default=None
)
Example Configurations
Requirements File Method
python_version: "3.9"
venv_directory: .venv
environments:
dev:
requirements:
- import: requirements.dev.txt
requirements:
- import: requirements.txt
Package List Method
python_version: "3.10"
venv_directory: .venv
environments:
dev:
requirements:
- package: flake8
- package: black
requirements:
- package: celery==5.2.6
- Flask>=2.1.2
Extra config and reading configuration values
yapenv allows extra configuration values to be embedded in its config file. e.g.
python_version: "3.10"
venv_directory: .venv
requirements:
- black
- flake8
my_custom_config:
a_list:
- a_key: "my_custom_value"
Note: extra configuration values follow yapenv config inheritance rules.
You can read your configuration value by,
yapenv config "my_custom_config.a_list[0].a_key"
That should output my_custom_value
Or a yaml block (see format options in the command),
yapenv config "my_custom_config.a_list"
Should output,
- a_key: "my_custom_value"
Contribution
Feel free to ping me in issues or directly on LinkedIn to contribute.
Future implementation
We plan to support multiple python version per environment.
Looking for help on this subject.
License
Copyright ©
Zav Shotan
and other contributors.
It is free software, released under the MIT licence, and may be redistributed under the terms specified in LICENSE
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file yapenv-0.4.7.tar.gz
.
File metadata
- Download URL: yapenv-0.4.7.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8fdbd969eb2f7083c26314583fb202d2e51557fb5303f8116bf8dc258e83c52 |
|
MD5 | e6a9615f432822ec01d35e4889970cc6 |
|
BLAKE2b-256 | 21a50cc2916a3218579cea0f985a2f5d78c252402b78e7e9d1e31d8056c3a3f4 |
File details
Details for the file yapenv-0.4.7-py3-none-any.whl
.
File metadata
- Download URL: yapenv-0.4.7-py3-none-any.whl
- Upload date:
- Size: 23.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 929b68355847eec089fc132bdf919d5a02fd77b6daf3dd3aed6dbc7d5ed3db76 |
|
MD5 | 04efa883fb7ff4a7fd0ca3134efc6f8f |
|
BLAKE2b-256 | 40c69b579f95a609059be862ebd810082f3acfb09c7cc0d66ceb207ba9a26d49 |