cookbook 'pyenv', '= 3.4.2'
pyenv
(30) Versions
3.4.2
-
Follow4
Manages pyenv and its installed Python versions.
cookbook 'pyenv', '= 3.4.2', :supermarket
knife supermarket install pyenv
knife supermarket download pyenv
pyenv Chef Cookbook
Description
Manages pyenv and its installed Pythons.
Several custom resources are defined to facilitate this.
WARNING As of v1.0.0
, this cookbook no longer provide any recipes. Custom resources are provided instead.
NOTE The following distros have [known issues][openssl-issues] regarding building python 3.7
which are all related to the OpenSSL library versions.
- RHEL6
- Debian 8
Requirements
Chef
This cookbook requires Chef 14.0+.
Platform family
- Debian derivatives (debian, ubuntu)
- Fedora
- RHEL derivatives (RHEL, CentOS, Amazon Linux, Oracle, Scientific Linux)
- openSUSE and openSUSE leap
Usage
Examples installations are provided in test/fixtures/cookbooks/test/recipes
A pyenv_system_install
or pyenv_user_install
is required to be set so that pyenv knows which version you want to use, and is installed on the system.
Pip
Used to install a Python package into the selected pyenv environment.
pyenv_pip 'requests' do virtualenv # Optional: if passed, pip inside provided virtualenv would be used (by default system's pip) version # Optional: if passed, the version the python package to install user # Optional: if passed, the user to install the python module for options # Optional: if passed, pip would install/uninstall packages with given options requirement # Optional: if true passed, install/uninstall requirements file passed with name property editable # Optional: if true passed, install package in editable mode end
The pyenv_pip resource has the following actions:
-
:install
- Default. Install a python package. If a version is specified, install the specified version of the python package. -
:upgrade
- Install/upgrade a python package. Callinstall
command with--upgrade
flag. If version is not specified, latest version will be installed. -
:uninstall
- Uninstall a python package.
Global
pyenv_global '3.6.1' do user # Optional: if passed sets the users global version. Do not set, to set the systems global version end
If a user is passed in to this resource it sets the global version for the user, under the users root_path (usually ~/.pyenv/version
), otherwise it sets the system global version.
Plugin
Installs a pyenv plugin.
pyenv_plugin 'virtualenv' do git_url # Git URL of the plugin git_ref # Git reference of the plugin environment # Optional: pass environment variables to git resource user # Optional: if passed installs to the users pyenv. Do not set, to set installs to the system pyenv. end
Rehash
pyenv_rehash 'rehash' do user # Optional: if passed rehashes the user pyenv otherwise rehashes the system pyenv end
Python
pyenv_python '3.6.1' do user # Optional: if passed, the user pyenv to install to environment # Optional: pass environment variable to git resource pyenv_action # Optional: the action to perform, install, remove etc verbose # Optional: print verbose output during python installation end
Shorter example pyenv_python '3.6.1'.
Script
Runs a pyenv aware script.
pyenv_script 'foo' do code # Script code to run pyenv_version # pyenv version to run the script against environment # Optional: Environment to setup to run the script user # Optional: User to run as group # Optional: Group to run as path # Optional: Path to search for commands returns # Optional: Expected return code end
System install
Installs pyenv to the system location, by default /usr/local/pyenv
pyenv_system_install 'foo' do git_url # URL of the plugin repo you want to checkout git_ref # Optional: Git reference to checkout environment # Optional: pass environment variable during pyenv installation update_pyenv # Optional: Keeps the git repo up to date end
User install
Installs pyenv to the user path, making pyenv available to that user only.
pyenv_user_install 'vagrant' do git_url # Optional: Git URL to checkout pyenv from. git_ref # Optional: Git reference to checkout e.g. 'master' environment # Optional: pass environment variable during pyenv installation user # Which user to install pyenv to (also specified in the resources name above) end
System-Wide Mac Installation Note
This cookbook takes advantage of managing profile fragments in an
/etc/profile.d
directory, common on most Unix-flavored platforms.
Unfortunately, Mac OS X does not support this idiom out of the box,
so you may need to [modify][mac_profile_d] your user profile.
Development
- Source hosted at GitHub
- Report issues/Questions/Feature requests on GitHub Issues
Pull requests are very welcome! Make sure your patches are well tested.
Contributors
This project exists thanks to all the people who contribute.
Backers
Thank you to all our backers!
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
Dependent cookbooks
This cookbook has no specified dependencies.
Contingent cookbooks
pyenv Changelog
3.4.2 - 2021-06-01
3.4.1 - 2020-12-31
- resolved cookstyle error: resources/pip.rb:153:1 convention:
Layout/TrailingEmptyLines
3.4.0 (2020-11-05)
- Add
:upgrade
action to the pyenv_pip resource
3.3.2 (2020-08-05)
- Do not attempt to rehash in a system-wide install
- Removed testing support for centos-6. Python 3.7.1 requires a newer version of openssl than centos-6 supplies.
- Removed testing support for debian-8. Debian-8 is no longer supported. Also has issues with the level of openssl that is available.
3.3.1
- Namespace the run_state variables used in the resources
3.3.0
- Chef 16 removed defaults for checkout_branch from the git resource, restore them to the previous default 'deploy'
3.2.0
- resolved cookstyle error: resources/pip.rb:107:7 convention:
Style/RedundantReturn
- resolved cookstyle error: resources/pip.rb:110:7 convention:
Style/RedundantReturn
- Migrate to actions for builds
- Fix broken link in README
- Follow up tweaks after ownership migration
3.1.1
- Migrated ownership to Sous-Chefs
- Latest cookstyle fixes (5.9.3)
3.1.0
- invoke
pip install
only necessary #34
3.0.0
- deprecate support for Chef 13 due to EOL
- update cookbook to use
apt_update
andbuild_essential
resources from Chef 14 make sure builds don't failed because of lack of packages
2.1.0
- add support for virtualenv installation and uninstallation.
- add support for passing environment variable during pyenv, python and plugin installation.
- delete "reinstall" property from pip resource and replace it with general "options" property
- make pyenv_script fail on any subcommand failure
Thanks to @ssps!
2.0.0
- Dropping support for Chef 12
1.0.0 (BREAKING CHANGES!!)
- Refactor and update the legacy code base. Recipes are no longer provided, and custom resources are used to manage pyenv installations instead.
- update
system_install
to be a resource - update
user_install
to be a resource - update
script
resource - update
python
resource - update
global
resource - update
rehash
resource - create
plugin
resource - create
pip
resource - update integration tests
- add linting to CI
- delete all recipes
- delete matchers
- delete
chef_pyenv_recipe_helpers
library - delete
chef_pyenv_mixin
library - add support for Fedora, RedHat distros and OpenSUSE
0.2.0
- Add oracle linux support
- Update syntax for chef-client v13
- Update gems and dependencies
- Add integration tests on travis
0.1.4
- Updated deprecated methods used in attributes.rb
0.1.0
- Update default pyenv version to v0.4.0-20140516
- Add support for CentOS 6.5
- Install
make
,build-essential
,libssl-dev
,zlib1g-dev
,wget
,curl
, andllvm
on Debian machines
0.0.1
- Initial port of chef-rbenv
Collaborator Number Metric
3.4.2 passed this metric
Contributing File Metric
3.4.2 passed this metric
Foodcritic Metric
3.4.2 passed this metric
No Binaries Metric
3.4.2 passed this metric
Testing File Metric
3.4.2 passed this metric
Version Tag Metric
3.4.2 passed this metric
3.4.2 passed this metric
3.4.2 passed this metric
Foodcritic Metric
3.4.2 passed this metric
No Binaries Metric
3.4.2 passed this metric
Testing File Metric
3.4.2 passed this metric
Version Tag Metric
3.4.2 passed this metric
3.4.2 passed this metric
3.4.2 passed this metric
Testing File Metric
3.4.2 passed this metric
Version Tag Metric
3.4.2 passed this metric
3.4.2 passed this metric
3.4.2 passed this metric