171 lines
4.8 KiB
Markdown
171 lines
4.8 KiB
Markdown
python Cookbook
|
|
===============
|
|
|
|
[](https://travis-ci.org/poise/python)
|
|
|
|
Installs and configures Python. Also includes LWRPs for managing python packages with `pip` and `virtualenv` isolated Python environments.
|
|
|
|
|
|
Requirements
|
|
------------
|
|
### Platforms
|
|
- Debian, Ubuntu
|
|
- CentOS, Red Hat, Fedora
|
|
|
|
### Cookbooks
|
|
- build-essential
|
|
- yum
|
|
|
|
NOTE: The `yum` cookbook is a dependency of the cookbook, and will be used to install [EPEL](http://fedoraproject.org/wiki/EPEL) on RedHet/CentOS 5.x systems to provide the Python 2.6 packages.
|
|
|
|
|
|
Attributes
|
|
----------
|
|
See `attributes/default.rb` for default values.
|
|
|
|
- `node["python"]["install_method"]` - method to install python with, default `package`.
|
|
|
|
The file also contains the following attributes:
|
|
|
|
- platform specific locations and settings
|
|
- source installation settings
|
|
|
|
|
|
Resource/Provider
|
|
-----------------
|
|
This cookbook includes LWRPs for managing:
|
|
|
|
- pip packages
|
|
- virtualenv isolated Python environments
|
|
|
|
### python_pip
|
|
Install packages using the new hotness in Python package management...[`pip`](http://pypi.python.org/pypi/pip). Yo dawg...easy_install is so 2009, you better ask your local Pythonista if you don't know! The usage semantics are like that of any normal package provider.
|
|
|
|
#### Actions
|
|
|
|
- :install: Install a pip package - if version is provided, install that specific version (default)
|
|
- :upgrade: Upgrade a pip package - if version is provided, upgrade to that specific version
|
|
- :remove: Remove a pip package
|
|
- :user: User to run pip as, for using with virtualenv
|
|
- :group: Group to run pip as, for using with virtualenv
|
|
- :purge: Purge a pip package (this usually entails removing configuration files as well as the package itself). With pip packages this behaves the same as `:remove`
|
|
|
|
#### Attribute Parameters
|
|
|
|
- package_name: name attribute. The name of the pip package to install
|
|
- version: the version of the package to install/upgrade. If no version is given latest is assumed.
|
|
- virtualenv: virtualenv environment to install pip package into
|
|
- options: Add additional options to the underlying pip package command
|
|
- timeout: timeout in seconds for the command to execute. Useful for pip packages that may take a long time to install. Default 900 seconds.
|
|
|
|
#### Examples
|
|
|
|
```ruby
|
|
# install latest gunicorn into system path
|
|
python_pip "gunicorn"
|
|
|
|
# target a virtualenv
|
|
python_pip "gunicorn" do
|
|
virtualenv "/home/ubunut/my_ve"
|
|
end
|
|
```
|
|
|
|
```ruby
|
|
# install Django 1.1.4
|
|
python_pip "django" do
|
|
version "1.1.4"
|
|
end
|
|
```
|
|
|
|
```ruby
|
|
# use this provider with the core package resource
|
|
package "django" do
|
|
provider Chef::Provider::PythonPip
|
|
end
|
|
```
|
|
|
|
### python_virtualenv
|
|
[`virtualenv`](http://pypi.python.org/pypi/virtualenv) is a great tool that creates isolated python environments. Think of it as RVM without all those hipsters and tight jeans.
|
|
|
|
#### Actions
|
|
- :create: creates a new virtualenv
|
|
- :delete: deletes an existing virtualenv
|
|
|
|
#### Attribute Parameters
|
|
- path: name attribute. The path where the virtualenv will be created
|
|
- interpreter: The Python interpreter to use. default is null (i.e. use whatever python the virtualenv command is using).
|
|
- owner: The owner for the virtualenv
|
|
- group: The group owner of the file (string or id)
|
|
- options : Command line options (string)
|
|
|
|
#### Examples
|
|
|
|
```ruby
|
|
# create a 2.6 virtualenv owned by ubuntu user
|
|
python_virtualenv "/home/ubuntu/my_cool_ve" do
|
|
owner "ubuntu"
|
|
group "ubuntu"
|
|
action :create
|
|
end
|
|
```
|
|
|
|
```ruby
|
|
# create a Python 2.4 virtualenv
|
|
python_virtualenv "/home/ubuntu/my_old_ve" do
|
|
interpreter "python2.4"
|
|
owner "ubuntu"
|
|
group "ubuntu"
|
|
action :create
|
|
end
|
|
```
|
|
|
|
```ruby
|
|
# create a Python 2.6 virtualenv with access to the global packages owned by ubuntu user
|
|
python_virtualenv "/home/ubuntu/my_old_ve" do
|
|
owner "ubuntu"
|
|
group "ubuntu"
|
|
options "--system-site-packages"
|
|
action :create
|
|
end
|
|
```
|
|
|
|
|
|
Usage
|
|
-----
|
|
### default
|
|
Include default recipe in a run list, to get `python`, `pip` and `virtualenv`. Installs python by package or source depending on the platform.
|
|
|
|
### package
|
|
Installs Python from packages.
|
|
|
|
### source
|
|
Installs Python from source.
|
|
|
|
### pip
|
|
Installs `pip` from source.
|
|
|
|
### virtualenv
|
|
|
|
Installs virtualenv using the `python_pip` resource.
|
|
|
|
|
|
License & Authors
|
|
-----------------
|
|
- Author:: Seth Chisamore (<schisamo@opscode.com>)
|
|
|
|
```text
|
|
Copyright:: 2011, Opscode, Inc
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
```
|