Draft Forbes Group Website (Build by Nikola). The official site is hosted at:
License: GPL3
ubuntu2004
In this post I describe my strategy for managing source code projects and dependencies with python, Conda, Pip, etc. I also show how to to maintain your own "PyPI" for source code packages.
As a general strategy, I am now trying to host everything on Anaconda Cloud so that all my packages and environments can be installed with Conda.
Overview
Within the Python community, the Python Packaging Authority (PyPA) provides the recommendations of the current working group, and we try to follow their guidelines as laid out in the Python Packaging User Guide.
My general strategy is to maintain Conda environments for each project and each main application, and to rely on these to ensure my projects work and can be easily distributed. In addition, I maintain a common work
environment that has everything and the kitchen sink which I can "just use" to get work done. This is hosted on Anaconda Cloud so you can install it and use it with:
Note: do not run this in a folder with an environment.yml
file. See Issue #549.
This notebook describes some details about this strategy which consists of the following concepts:
Jupyter: This section discusses the
jupyter
environment where I install Jupyter and related tools.I use a script to launch the Jupyter notebook server and/or Jupyter Lab so that this environment is first activated.
I use the
nb_conda
extension so that one can access the conda environments from Jupyter. (This requires ensuring that theipykernel
package is installed in each environment so that they can be found.)I use the Jupytext extension so that you can store notebooks as python files for better version control. This requires a small manual change in your notebooks to enable.
Conda Environments: I try to package everything into Conda environments. There are several use-cases here:
Global environments such as
work2
andwork3
which have everything including the kitchen sink for python 2 and python 3 respectively. When I just need to get something done, I activate these and work. Don't rely on these for testing though: instead use minimal and dedicated environments for your code.Dedicated and minimal project environments should be used for each project that contain the minimal number of packages required. Your tests should be run in these environments (plus any testing tools) so that you can be sure no undocumented dependencies creep in when you add new features. I usually keep two copies:
environment.yml
: This contains the packages I need (leaves), usually without version specifications unless there is a known conflict. It can be kept clean as descibed in the section Visualizing Dependencies. To create or update the environment:environment.frozen.yml
: This contains the explicit versions I am testing against to ensure reproducible computations. It can be formed by:
Anaconda Cloud: I try to use my
mforbes
channel on Anaconda Cloud to host useful environments and packages. Ideally, all packages should be installable with only Conda. Some information about how to build and maintain Conda packages and environments is discussed in section Building a Conda Package.
TL;DR
Conda
Use conda to manage environments. (Conda can be slow: for faster installs you can try mamba, but it is still experimental.)
For each project, create an environment which will contain all the packages like NumPy, SciPy etc. needed for that project. (Also specify python 2 or python 3). Store these requirements in a project-specific
environment.yml
file.Create an environment for that project that includes the
ipykernel
package:(This assumes that
environment.yml
specifies the name of the environment, otherwise you need to pass conda the-n <env>
flag).Install Jupyter (see instructions below) in its own environment and include the
nb_conda
package. By including theipykernel
package in each environment and thenb_conda
package in thejupyter
environment, Jupyter will be able to find your environments and use them as kernels.Launch Jupyter with a custom kernel for your project using the following function which will activate the
jupyter
environment first:
Pip
The following recommendations are based on using pip to manage dependencies. We are in the process of migrating to a more conda-centric version.
Provide a
setup.py
file for your source repositories that contains all of the dependency information in theinstall_requires
argument tosetup()
.Structure your repository with tags and/or named branches so that you can
hg update 0.9
etc. to update to the various versions.Host an
index.html
file somewhere that points to the Download links of the various projects.Use
pip install --extra-index-url <index.html>
to allow pip to resolve dependencies against your source code.
Conda
Conda and Anaconda provide quite complete python distributions for scientific computing. Unless I am specifically developing packages for general us, I allow myself to rely on the default Anaconda distribution. This includes the Conda package manager, which provides an alternative to virtualenv for managing environments.
There is a nice discussion of the state of conda here:
Conda has a few important benefits:
Many binary packages are supported, including some that are not python (and hence cannot be managed by pip).
Conda including builds of NumPy, SciPy, and Matplotlib that can be difficult to install from source.
Conda keeps track of your history (try
conda list --revisions
) which can help if you need to reproduce some history.For educational use (or paid commercial use), one can install the Accelerate package.
Conda is aware of packages installed with
pip
so these can still be used.Conda provides environments, replacing the need for
virtualenv
.
Cheatsheet
Working with packages:
conda update --all
: Update all packages in an environment.conda clean --all
: Remove all downloaded packages and unused files. Can free significant amounts of disk space.
Working with environments:
conda activate <env>
/conda deactivate
: Activate or deactivate an environment.conda env list
: Show installed environments (and their location).conda env update [ -n name ] ( -f environment.yml | channel/spec ) [ --prune ]
: Update packages in an environment from a file or anaconda channel, optionally removing unnecessary files (but see this issue.)
Package Availablity
One issue when dealing with conda is that not all packages are available. There several ways to deal with this:
Search for the package on another channel. The following channels seem to be reliable:
conda-forge: This is a community driven project that provides an infrastructure for building and maintaining packages cleanly on Windows, Linux, and OS X. It is described in the post - Community powered conda packaging: conda-forge.
pipy To add a new channel:
Then you can look with
$ conda config --show add_anaconda_token: True add_pip_as_python_dependency: True allow_softlinks: True always_copy: False always_yes: False auto_update_conda: True binstar_upload: None changeps1: True channel_alias: https://conda.anaconda.org/ channel_priority: True channels:
defaults
conda-forge client_cert: client_cert_key: create_default_packages: [] debug: False default_channels:
https://repo.continuum.io/pkgs/pro disallow: [] json: False offline: False proxy_servers: {} quiet: False shortcuts: True show_channel_urls: True ssl_verify: True track_features: [] update_dependencies: True use_pip: True verbosity: 0
Getting Started
My strategy is to install a minimal conda installation with python 2.0 and then add various environments as needed. Each project should have its own conda environment so that one can reproducibly manage the dependencies of that project. This ties together as follows:
The conda
base
environment and some custom environments (jupyter
might be a good candidate) can be maintained at a system level by an admin. On my computers, these reside in:The
jupyter
environment contains thenb_conda
extension which allows one to choose kernels based on known conda environments. With this, you can run jupyter from thejupyter
environment and use a specialize kernel for whatever computation you need. (For example,jupyter
should be run with Python 3, but you may have kernels that are still Python 2. This approach means you do not need to include jupyter in you project environment.)On a system where users cannot write to
/data/apps/conda
, environments created by the user will be automatically placed in:Thus, users can immediately create their own environments as needed.
If a user needs to create an environment in
~/.conda/envs/
that shadows an environment in/data/apps/conda/envs
, then it seems this can be done by first making the appropriate directory, then using conda to install whatever is needed:
$ conda install -n jupyter ...
Miniconda
I first install Miniconda with Python 2.7.
I choose to use python 2.7 here because it allows me to install Mercurial which will likely not support Python 3 for some time.
I add the miniconda
bin
directory to the end of my path so that thehg
command will fall through if I have activated a python 3 environment.Other than mercurial and related tools, I keep the default environment clean.
Update Conda
After installing miniconda, I do an update:
Historical note: When I originally wrote this article, I obtained the following outputs at various times:
One interesting feature shown here is that conda keeps track of your revisions. You can update the revisions with conda install --revision=0
(the original miniconda installation for example) and you can list them with:
Command Completion
Before doing any more work, add command completion so that you can explore options:
Unsetting IPYTHONDIR
Unsetting TALENT2015DIR
Fetching package metadata .......
Solving package specifications: ..........
Package plan for installation in environment /data/apps/anaconda:
The following packages will be downloaded:
package | build
---------------------------|-----------------
argcomplete-1.0.0 | py27_1 32 KB defaults
The following NEW packages will be INSTALLED:
argcomplete: 1.0.0-py27_1 defaults
Fetching packages ...
argcomplete-1. 100% |###############################| Time: 0:00:00 405.57 kB/s
Extracting packages ...
[ COMPLETE ]|##################################################| 100%
Linking packages ...
[ COMPLETE ]|##################################################| 100%
Configure Conda
Conda allows you to configure it with the conda config
command. Here I add the conda-forge channel.
Environments
To ensure reproducible computing, I highly recommend working from a clean environment for your projects so that you can enter a clean environment with
To do this, maintain an environment.yml
file such as this:
Then create a new environment as follows:
Periodically you should check if anything is outdated:
and possibly update everything
If you then make a _conda_env
environment in the project and choose this as the kernel for your notebooks, you can then run in an isolated environment. Don't forget to exclude _cond_env
from selective sync with Dropbox etc. as it can get big! For this reason, it can be better to install this globally.
Frozen Envrionments
I manually create environment files like the one above which specify the leave nodes I need. To prune these, see the section Visualizing Dependencies:Conda
I keep a few clean environments for use when testing.
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py2.6:
The following NEW packages will be INSTALLED:
openssl: 1.0.1k-1
pip: 6.1.1-py26_0
python: 2.6.9-1
readline: 6.2-2
setuptools: 15.2-py26_0
sqlite: 3.8.4.1-1
tk: 8.5.18-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py2.6
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py2.7:
The following NEW packages will be INSTALLED:
openssl: 1.0.1k-1
pip: 6.1.1-py27_0
python: 2.7.9-1
readline: 6.2-2
setuptools: 15.2-py27_0
sqlite: 3.8.4.1-1
tk: 8.5.18-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py2.7
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py3.3:
The following NEW packages will be INSTALLED:
openssl: 1.0.1k-1
pip: 6.1.1-py33_0
python: 3.3.5-3
readline: 6.2-2
setuptools: 15.2-py33_0
sqlite: 3.8.4.1-1
tk: 8.5.18-0
xz: 5.0.5-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py3.3
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py3.4:
The following NEW packages will be INSTALLED:
openssl: 1.0.1k-1
pip: 6.1.1-py34_0
python: 3.4.3-0
readline: 6.2-2
setuptools: 15.2-py34_0
sqlite: 3.8.4.1-1
tk: 8.5.18-0
xz: 5.0.5-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py3.4
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py2.6a:
The following NEW packages will be INSTALLED:
abstract-rendering: 0.5.1-np19py26_0
anaconda: 2.2.0-np19py26_0
appscript: 1.0.1-py26_0
argcomplete: 0.8.4-py26_0
argparse: 1.3.0-py26_0
astropy: 1.0.1-np19py26_0
bcolz: 0.8.1-np19py26_0
beautiful-soup: 4.3.2-py26_0
bitarray: 0.8.1-py26_0
blaze-core: 0.7.3-np19py26_0
blz: 0.6.2-np19py26_0
boto: 2.36.0-py26_0
cdecimal: 2.3-py26_0
certifi: 14.05.14-py26_0
cffi: 0.9.2-py26_0
colorama: 0.3.3-py26_0
configobj: 5.0.6-py26_0
cryptography: 0.8-py26_0
curl: 7.38.0-0
cython: 0.22-py26_0
cytoolz: 0.7.2-py26_0
datashape: 0.4.4-np19py26_1
decorator: 3.4.0-py26_0
docutils: 0.12-py26_0
dynd-python: 0.6.5-np19py26_0
enum34: 1.0.4-py26_0
fastcache: 1.0.2-py26_0
flask: 0.10.1-py26_1
freetype: 2.5.2-0
funcsigs: 0.4-py26_0
futures: 2.2.0-py26_0
gevent: 1.0.1-py26_0
gevent-websocket: 0.9.3-py26_0
greenlet: 0.4.5-py26_0
grin: 1.2.1-py26_1
h5py: 2.4.0-np19py26_0
hdf5: 1.8.14-0
itsdangerous: 0.24-py26_0
jdcal: 1.0-py26_0
jedi: 0.8.1-py26_0
jinja2: 2.7.3-py26_1
jpeg: 8d-1
jsonschema: 2.4.0-py26_0
libdynd: 0.6.5-0
libpng: 1.5.13-1
libsodium: 0.4.5-0
libtiff: 4.0.2-1
libxml2: 2.9.0-1
libxslt: 1.1.28-2
llvmlite: 0.2.2-py26_1
lxml: 3.4.2-py26_0
markupsafe: 0.23-py26_0
matplotlib: 1.4.3-np19py26_1
mistune: 0.5.1-py26_0
mock: 1.0.1-py26_0
multipledispatch: 0.4.7-py26_0
networkx: 1.9.1-py26_0
nltk: 3.0.2-np19py26_0
nose: 1.3.4-py26_1
numba: 0.17.0-np19py26_0
numexpr: 2.3.1-np19py26_0
numpy: 1.9.2-py26_0
odo: 0.3.1-np19py26_0
openssl: 1.0.1k-1
ordereddict: 1.1-py26_0
pandas: 0.15.2-np19py26_1
patsy: 0.3.0-np19py26_0
pep8: 1.6.2-py26_0
pillow: 2.7.0-py26_1
pip: 6.0.8-py26_0
ply: 3.4-py26_0
psutil: 2.2.1-py26_0
py: 1.4.26-py26_0
pyasn1: 0.1.7-py26_0
pycosat: 0.6.1-py26_0
pycparser: 2.10-py26_0
pycrypto: 2.6.1-py26_0
pycurl: 7.19.5.1-py26_0
pyflakes: 0.8.1-py26_0
pygments: 2.0.2-py26_0
pyopenssl: 0.14-py26_0
pyparsing: 2.0.3-py26_0
pyqt: 4.11.3-py26_0
pytables: 3.1.1-np19py26_2
pytest: 2.6.4-py26_0
python: 2.6.9-1
python-dateutil: 2.4.1-py26_0
python.app: 1.2-py26_3
pytz: 2015.2-py26_0
pyyaml: 3.11-py26_0
pyzmq: 14.5.0-py26_0
qt: 4.8.6-0
readline: 6.2-2
redis: 2.6.9-0
redis-py: 2.10.3-py26_0
requests: 2.6.0-py26_0
rope: 0.9.4-py26_1
scikit-image: 0.11.2-np19py26_0
scikit-learn: 0.15.2-np19py26_0
scipy: 0.15.1-np19py26_0
setuptools: 14.3-py26_0
sip: 4.16.5-py26_0
six: 1.9.0-py26_0
sockjs-tornado: 1.0.1-py26_0
sphinx: 1.2.3-py26_0
sqlalchemy: 0.9.9-py26_0
sqlite: 3.8.4.1-1
ssl_match_hostname: 3.4.0.2-py26_0
statsmodels: 0.6.1-np19py26_0
sympy: 0.7.6-py26_0
tk: 8.5.18-0
toolz: 0.7.1-py26_0
tornado: 4.1-py26_0
ujson: 1.33-py26_0
unicodecsv: 0.9.4-py26_0
unittest2: 0.8.0-py26_0
werkzeug: 0.10.1-py26_0
xlrd: 0.9.3-py26_0
xlsxwriter: 0.6.7-py26_0
xlwings: 0.3.4-py26_0
xlwt: 0.7.5-py26_0
yaml: 0.1.4-1
zeromq: 4.0.4-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py2.6a
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py2.7a:
The following NEW packages will be INSTALLED:
_license: 1.1-py27_0
abstract-rendering: 0.5.1-np19py27_0
anaconda: 2.2.0-np19py27_0
appscript: 1.0.1-py27_0
argcomplete: 0.8.4-py27_0
astropy: 1.0.1-np19py27_0
bcolz: 0.8.1-np19py27_0
beautiful-soup: 4.3.2-py27_0
binstar: 0.10.1-py27_3
bitarray: 0.8.1-py27_0
blaze-core: 0.7.3-np19py27_0
blz: 0.6.2-np19py27_0
bokeh: 0.8.1-np19py27_1
boto: 2.36.0-py27_0
cdecimal: 2.3-py27_0
certifi: 14.05.14-py27_0
cffi: 0.9.2-py27_0
clyent: 0.3.4-py27_0
colorama: 0.3.3-py27_0
configobj: 5.0.6-py27_0
cryptography: 0.8-py27_0
curl: 7.38.0-0
cython: 0.22-py27_0
cytoolz: 0.7.2-py27_0
datashape: 0.4.4-np19py27_1
decorator: 3.4.0-py27_0
docutils: 0.12-py27_0
dynd-python: 0.6.5-np19py27_0
enum34: 1.0.4-py27_0
fastcache: 1.0.2-py27_0
flask: 0.10.1-py27_1
freetype: 2.5.2-0
funcsigs: 0.4-py27_0
futures: 2.2.0-py27_0
gevent: 1.0.1-py27_0
gevent-websocket: 0.9.3-py27_0
greenlet: 0.4.5-py27_0
grin: 1.2.1-py27_1
h5py: 2.4.0-np19py27_0
hdf5: 1.8.14-0
ipython: 3.0.0-py27_0
ipython-notebook: 3.0.0-py27_1
ipython-qtconsole: 3.0.0-py27_0
itsdangerous: 0.24-py27_0
jdcal: 1.0-py27_0
jedi: 0.8.1-py27_0
jinja2: 2.7.3-py27_1
jpeg: 8d-1
jsonschema: 2.4.0-py27_0
launcher: 1.0.0-2
libdynd: 0.6.5-0
libpng: 1.5.13-1
libsodium: 0.4.5-0
libtiff: 4.0.2-1
libxml2: 2.9.0-1
libxslt: 1.1.28-2
llvmlite: 0.2.2-py27_1
lxml: 3.4.2-py27_0
markupsafe: 0.23-py27_0
matplotlib: 1.4.3-np19py27_1
mistune: 0.5.1-py27_0
mock: 1.0.1-py27_0
multipledispatch: 0.4.7-py27_0
networkx: 1.9.1-py27_0
nltk: 3.0.2-np19py27_0
node-webkit: 0.10.1-0
nose: 1.3.4-py27_1
numba: 0.17.0-np19py27_0
numexpr: 2.3.1-np19py27_0
numpy: 1.9.2-py27_0
odo: 0.3.1-np19py27_0
openpyxl: 1.8.5-py27_0
openssl: 1.0.1k-1
pandas: 0.15.2-np19py27_1
patsy: 0.3.0-np19py27_0
pep8: 1.6.2-py27_0
pillow: 2.7.0-py27_1
pip: 6.0.8-py27_0
ply: 3.4-py27_0
psutil: 2.2.1-py27_0
ptyprocess: 0.4-py27_0
py: 1.4.26-py27_0
pyasn1: 0.1.7-py27_0
pyaudio: 0.2.7-py27_0
pycosat: 0.6.1-py27_0
pycparser: 2.10-py27_0
pycrypto: 2.6.1-py27_0
pycurl: 7.19.5.1-py27_0
pyflakes: 0.8.1-py27_0
pygments: 2.0.2-py27_0
pyopenssl: 0.14-py27_0
pyparsing: 2.0.3-py27_0
pyqt: 4.11.3-py27_0
pytables: 3.1.1-np19py27_2
pytest: 2.6.4-py27_0
python: 2.7.9-1
python-dateutil: 2.4.1-py27_0
python.app: 1.2-py27_3
pytz: 2015.2-py27_0
pyyaml: 3.11-py27_0
pyzmq: 14.5.0-py27_0
qt: 4.8.6-0
readline: 6.2-2
redis: 2.6.9-0
redis-py: 2.10.3-py27_0
requests: 2.6.0-py27_0
rope: 0.9.4-py27_1
runipy: 0.1.3-py27_0
scikit-image: 0.11.2-np19py27_0
scikit-learn: 0.15.2-np19py27_0
scipy: 0.15.1-np19py27_0
setuptools: 14.3-py27_0
sip: 4.16.5-py27_0
six: 1.9.0-py27_0
sockjs-tornado: 1.0.1-py27_0
sphinx: 1.2.3-py27_0
spyder: 2.3.4-py27_1
spyder-app: 2.3.4-py27_0
sqlalchemy: 0.9.9-py27_0
sqlite: 3.8.4.1-1
ssl_match_hostname: 3.4.0.2-py27_0
statsmodels: 0.6.1-np19py27_0
sympy: 0.7.6-py27_0
terminado: 0.5-py27_0
tk: 8.5.18-0
toolz: 0.7.1-py27_0
tornado: 4.1-py27_0
ujson: 1.33-py27_0
unicodecsv: 0.9.4-py27_0
werkzeug: 0.10.1-py27_0
xlrd: 0.9.3-py27_0
xlsxwriter: 0.6.7-py27_0
xlwings: 0.3.4-py27_0
xlwt: 0.7.5-py27_0
yaml: 0.1.4-1
zeromq: 4.0.4-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py2.7a
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py3.3a:
The following NEW packages will be INSTALLED:
abstract-rendering: 0.5.1-np19py33_0
anaconda: 2.2.0-np19py33_0
appscript: 1.0.1-py33_0
argcomplete: 0.8.4-py33_0
astropy: 1.0.1-np19py33_0
bcolz: 0.8.1-np19py33_0
beautiful-soup: 4.3.2-py33_0
binstar: 0.10.1-py33_3
bitarray: 0.8.1-py33_0
blaze-core: 0.7.3-np19py33_0
blz: 0.6.2-np19py33_0
bokeh: 0.8.1-np19py33_1
boto: 2.36.0-py33_0
certifi: 14.05.14-py33_0
cffi: 0.9.2-py33_0
clyent: 0.3.4-py33_0
colorama: 0.3.3-py33_0
configobj: 5.0.6-py33_0
cryptography: 0.8-py33_0
curl: 7.38.0-0
cython: 0.22-py33_0
cytoolz: 0.7.2-py33_0
datashape: 0.4.4-np19py33_1
decorator: 3.4.0-py33_0
docutils: 0.12-py33_0
dynd-python: 0.6.5-np19py33_0
enum34: 1.0.4-py33_0
fastcache: 1.0.2-py33_0
flask: 0.10.1-py33_1
freetype: 2.5.2-0
greenlet: 0.4.5-py33_0
h5py: 2.4.0-np19py33_0
hdf5: 1.8.14-0
ipython: 3.0.0-py33_0
ipython-notebook: 3.0.0-py33_1
ipython-qtconsole: 3.0.0-py33_0
itsdangerous: 0.24-py33_0
jdcal: 1.0-py33_0
jedi: 0.8.1-py33_0
jinja2: 2.7.3-py33_1
jpeg: 8d-1
jsonschema: 2.4.0-py33_0
libdynd: 0.6.5-0
libpng: 1.5.13-1
libsodium: 0.4.5-0
libtiff: 4.0.2-1
libxml2: 2.9.0-1
libxslt: 1.1.28-2
llvmlite: 0.2.2-py33_1
lxml: 3.4.2-py33_0
markupsafe: 0.23-py33_0
matplotlib: 1.4.3-np19py33_1
mistune: 0.5.1-py33_0
mock: 1.0.1-py33_0
multipledispatch: 0.4.7-py33_0
networkx: 1.9.1-py33_0
nltk: 3.0.2-np19py33_0
nose: 1.3.4-py33_1
numba: 0.17.0-np19py33_0
numexpr: 2.3.1-np19py33_0
numpy: 1.9.2-py33_0
odo: 0.3.1-np19py33_0
openpyxl: 1.8.5-py33_0
openssl: 1.0.1k-1
pandas: 0.15.2-np19py33_1
patsy: 0.3.0-np19py33_0
pep8: 1.6.2-py33_0
pillow: 2.7.0-py33_1
pip: 6.0.8-py33_0
ply: 3.4-py33_0
psutil: 2.2.1-py33_0
ptyprocess: 0.4-py33_0
py: 1.4.26-py33_0
pyasn1: 0.1.7-py33_0
pycosat: 0.6.1-py33_0
pycparser: 2.10-py33_0
pycrypto: 2.6.1-py33_0
pycurl: 7.19.5.1-py33_0
pyflakes: 0.8.1-py33_0
pygments: 2.0.2-py33_0
pyopenssl: 0.14-py33_0
pyparsing: 2.0.3-py33_0
pyqt: 4.11.3-py33_0
pytables: 3.1.1-np19py33_2
pytest: 2.6.4-py33_0
python: 3.3.5-3
python-dateutil: 2.4.1-py33_0
python.app: 1.2-py33_3
pytz: 2015.2-py33_0
pyyaml: 3.11-py33_0
pyzmq: 14.5.0-py33_0
qt: 4.8.6-0
readline: 6.2-2
redis: 2.6.9-0
redis-py: 2.10.3-py33_0
requests: 2.6.0-py33_0
rope: 0.9.4-py33_1
runipy: 0.1.3-py33_0
scikit-image: 0.11.2-np19py33_0
scikit-learn: 0.15.2-np19py33_0
scipy: 0.15.1-np19py33_0
setuptools: 14.3-py33_0
sip: 4.16.5-py33_0
six: 1.9.0-py33_0
sockjs-tornado: 1.0.1-py33_0
sphinx: 1.2.3-py33_0
sqlalchemy: 0.9.9-py33_0
sqlite: 3.8.4.1-1
statsmodels: 0.6.1-np19py33_0
sympy: 0.7.6-py33_0
terminado: 0.5-py33_0
tk: 8.5.18-0
toolz: 0.7.1-py33_0
tornado: 4.1-py33_0
ujson: 1.33-py33_0
werkzeug: 0.10.1-py33_0
xlrd: 0.9.3-py33_0
xlsxwriter: 0.6.7-py33_0
xlwings: 0.3.4-py33_0
xz: 5.0.5-0
yaml: 0.1.4-1
zeromq: 4.0.4-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py3.3a
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py3.4a:
The following packages will be downloaded:
package | build
---------------------------|-----------------
sphinx-1.2.3 | py34_0 1015 KB
bokeh-0.8.1 | np19py34_1 13.5 MB
odo-0.3.1 | np19py34_0 141 KB
runipy-0.1.3 | py34_0 9 KB
scikit-image-0.11.2 | np19py34_0 15.9 MB
spyder-2.3.4 | py34_1 4.0 MB
statsmodels-0.6.1 | np19py34_0 4.7 MB
blaze-core-0.7.3 | np19py34_0 313 KB
spyder-app-2.3.4 | py34_0 7 KB
anaconda-2.2.0 | np19py34_0 3 KB
------------------------------------------------------------
Total: 39.6 MB
The following NEW packages will be INSTALLED:
_license: 1.1-py34_0
abstract-rendering: 0.5.1-np19py34_0
anaconda: 2.2.0-np19py34_0
appscript: 1.0.1-py34_0
argcomplete: 0.8.4-py34_0
astropy: 1.0.1-np19py34_0
bcolz: 0.8.1-np19py34_0
beautiful-soup: 4.3.2-py34_0
binstar: 0.10.1-py34_3
bitarray: 0.8.1-py34_0
blaze-core: 0.7.3-np19py34_0
blz: 0.6.2-np19py34_0
bokeh: 0.8.1-np19py34_1
boto: 2.36.0-py34_0
certifi: 14.05.14-py34_0
cffi: 0.9.2-py34_0
clyent: 0.3.4-py34_0
colorama: 0.3.3-py34_0
configobj: 5.0.6-py34_0
cryptography: 0.8-py34_0
curl: 7.38.0-0
cython: 0.22-py34_0
cytoolz: 0.7.2-py34_0
datashape: 0.4.4-np19py34_1
decorator: 3.4.0-py34_0
docutils: 0.12-py34_0
dynd-python: 0.6.5-np19py34_0
fastcache: 1.0.2-py34_0
flask: 0.10.1-py34_1
freetype: 2.5.2-0
greenlet: 0.4.5-py34_0
h5py: 2.4.0-np19py34_0
hdf5: 1.8.14-0
ipython: 3.0.0-py34_0
ipython-notebook: 3.0.0-py34_1
ipython-qtconsole: 3.0.0-py34_0
itsdangerous: 0.24-py34_0
jdcal: 1.0-py34_0
jedi: 0.8.1-py34_0
jinja2: 2.7.3-py34_1
jpeg: 8d-1
jsonschema: 2.4.0-py34_0
launcher: 1.0.0-2
libdynd: 0.6.5-0
libpng: 1.5.13-1
libsodium: 0.4.5-0
libtiff: 4.0.2-1
libxml2: 2.9.0-1
libxslt: 1.1.28-2
llvmlite: 0.2.2-py34_1
lxml: 3.4.2-py34_0
markupsafe: 0.23-py34_0
matplotlib: 1.4.3-np19py34_1
mistune: 0.5.1-py34_0
mock: 1.0.1-py34_0
multipledispatch: 0.4.7-py34_0
networkx: 1.9.1-py34_0
nltk: 3.0.2-np19py34_0
node-webkit: 0.10.1-0
nose: 1.3.4-py34_1
numba: 0.17.0-np19py34_0
numexpr: 2.3.1-np19py34_0
numpy: 1.9.2-py34_0
odo: 0.3.1-np19py34_0
openpyxl: 1.8.5-py34_0
openssl: 1.0.1k-1
pandas: 0.15.2-np19py34_1
patsy: 0.3.0-np19py34_0
pep8: 1.6.2-py34_0
pillow: 2.7.0-py34_1
pip: 6.0.8-py34_0
ply: 3.4-py34_0
psutil: 2.2.1-py34_0
ptyprocess: 0.4-py34_0
py: 1.4.26-py34_0
pyasn1: 0.1.7-py34_0
pycosat: 0.6.1-py34_0
pycparser: 2.10-py34_0
pycrypto: 2.6.1-py34_0
pycurl: 7.19.5.1-py34_0
pyflakes: 0.8.1-py34_0
pygments: 2.0.2-py34_0
pyopenssl: 0.14-py34_0
pyparsing: 2.0.3-py34_0
pyqt: 4.11.3-py34_0
pytables: 3.1.1-np19py34_2
pytest: 2.6.4-py34_0
python: 3.4.3-0
python-dateutil: 2.4.1-py34_0
python.app: 1.2-py34_3
pytz: 2015.2-py34_0
pyyaml: 3.11-py34_0
pyzmq: 14.5.0-py34_0
qt: 4.8.6-0
readline: 6.2-2
redis: 2.6.9-0
redis-py: 2.10.3-py34_0
requests: 2.6.0-py34_0
rope: 0.9.4-py34_1
runipy: 0.1.3-py34_0
scikit-image: 0.11.2-np19py34_0
scikit-learn: 0.15.2-np19py34_0
scipy: 0.15.1-np19py34_0
setuptools: 14.3-py34_0
sip: 4.16.5-py34_0
six: 1.9.0-py34_0
sockjs-tornado: 1.0.1-py34_0
sphinx: 1.2.3-py34_0
spyder: 2.3.4-py34_1
spyder-app: 2.3.4-py34_0
sqlalchemy: 0.9.9-py34_0
sqlite: 3.8.4.1-1
statsmodels: 0.6.1-np19py34_0
sympy: 0.7.6-py34_0
terminado: 0.5-py34_0
tk: 8.5.18-0
toolz: 0.7.1-py34_0
tornado: 4.1-py34_0
ujson: 1.33-py34_0
werkzeug: 0.10.1-py34_0
xlrd: 0.9.3-py34_0
xlsxwriter: 0.6.7-py34_0
xlwings: 0.3.4-py34_0
xz: 5.0.5-0
yaml: 0.1.4-1
zeromq: 4.0.4-0
zlib: 1.2.8-0
Fetching packages ...
sphinx-1.2.3-p 100% |########################################################################################| Time: 0:00:01 714.35 kB/s
bokeh-0.8.1-np 100% |########################################################################################| Time: 0:00:06 2.25 MB/s
odo-0.3.1-np19 100% |########################################################################################| Time: 0:00:00 467.68 kB/s
runipy-0.1.3-p 100% |########################################################################################| Time: 0:00:00 7.53 MB/s
scikit-image-0 100% |########################################################################################| Time: 0:00:15 1.11 MB/s
spyder-2.3.4-p 100% |########################################################################################| Time: 0:00:02 1.48 MB/s
statsmodels-0. 100% |########################################################################################| Time: 0:00:02 2.10 MB/s
blaze-core-0.7 100% |########################################################################################| Time: 0:00:00 808.76 kB/s
spyder-app-2.3 100% |########################################################################################| Time: 0:00:00 2.49 MB/s
anaconda-2.2.0 100% |########################################################################################| Time: 0:00:00 1.93 MB/s
Extracting packages ...
[ COMPLETE ]|###########################################################################################################| 100%
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py3.4a
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Fetching package metadata: ..........
Solving package specifications: .............
Package plan for installation in environment /data/apps/anaconda/envs/py2:
The following NEW packages will be INSTALLED:
openssl: 1.0.1k-1
pip: 6.1.1-py27_0
python: 2.7.9-1
readline: 6.2-2
setuptools: 15.2-py27_0
sqlite: 3.8.4.1-1
tk: 8.5.18-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py2
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Solving package specifications: .
# All requested packages already installed.
# packages in environment at /data/apps/anaconda/envs/py2:
#
openssl 1.0.1k 1
pip 6.1.1 py27_0
python 2.7.9 1
readline 6.2 2
setuptools 15.2 py27_0
sqlite 3.8.4.1 1
tk 8.5.18 0
zlib 1.2.8 0
Fetching package metadata: ..........
Solving package specifications: .............
Package plan for installation in environment /data/apps/anaconda/envs/py3:
The following NEW packages will be INSTALLED:
openssl: 1.0.1k-1
pip: 6.1.1-py34_0
python: 3.4.3-0
readline: 6.2-2
setuptools: 15.2-py34_0
sqlite: 3.8.4.1-1
tk: 8.5.18-0
xz: 5.0.5-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py3
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Solving package specifications: .
# All requested packages already installed.
# packages in environment at /data/apps/anaconda/envs/py3:
#
openssl 1.0.1k 1
pip 6.1.1 py34_0
python 3.4.3 0
readline 6.2 2
setuptools 15.2 py34_0
sqlite 3.8.4.1 1
tk 8.5.18 0
xz 5.0.5 0
zlib 1.2.8 0
Fetching package metadata: ..........
Solving package specifications: .............
Package plan for installation in environment /data/apps/anaconda/envs/py2a:
The following NEW packages will be INSTALLED:
openssl: 1.0.1k-1
pip: 6.1.1-py27_0
python: 2.7.9-1
readline: 6.2-2
setuptools: 15.2-py27_0
sqlite: 3.8.4.1-1
tk: 8.5.18-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py2a
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py2a:
The following NEW packages will be INSTALLED:
_license: 1.1-py27_0
abstract-rendering: 0.5.1-np19py27_0
anaconda: 2.2.0-np19py27_0
appscript: 1.0.1-py27_0
argcomplete: 0.8.4-py27_0
astropy: 1.0.1-np19py27_0
bcolz: 0.8.1-np19py27_0
beautiful-soup: 4.3.2-py27_0
binstar: 0.10.1-py27_3
bitarray: 0.8.1-py27_0
blaze-core: 0.7.3-np19py27_0
blz: 0.6.2-np19py27_0
bokeh: 0.8.1-np19py27_1
boto: 2.36.0-py27_0
cdecimal: 2.3-py27_0
certifi: 14.05.14-py27_0
cffi: 0.9.2-py27_0
clyent: 0.3.4-py27_0
colorama: 0.3.3-py27_0
configobj: 5.0.6-py27_0
cryptography: 0.8-py27_0
curl: 7.38.0-0
cython: 0.22-py27_0
cytoolz: 0.7.2-py27_0
datashape: 0.4.4-np19py27_1
decorator: 3.4.0-py27_0
docutils: 0.12-py27_0
dynd-python: 0.6.5-np19py27_0
enum34: 1.0.4-py27_0
fastcache: 1.0.2-py27_0
flask: 0.10.1-py27_1
freetype: 2.5.2-0
funcsigs: 0.4-py27_0
futures: 2.2.0-py27_0
gevent: 1.0.1-py27_0
gevent-websocket: 0.9.3-py27_0
greenlet: 0.4.5-py27_0
grin: 1.2.1-py27_1
h5py: 2.4.0-np19py27_0
hdf5: 1.8.14-0
ipython: 3.0.0-py27_0
ipython-notebook: 3.0.0-py27_1
ipython-qtconsole: 3.0.0-py27_0
itsdangerous: 0.24-py27_0
jdcal: 1.0-py27_0
jedi: 0.8.1-py27_0
jinja2: 2.7.3-py27_1
jpeg: 8d-1
jsonschema: 2.4.0-py27_0
launcher: 1.0.0-2
libdynd: 0.6.5-0
libpng: 1.5.13-1
libsodium: 0.4.5-0
libtiff: 4.0.2-1
libxml2: 2.9.0-1
libxslt: 1.1.28-2
llvmlite: 0.2.2-py27_1
lxml: 3.4.2-py27_0
markupsafe: 0.23-py27_0
matplotlib: 1.4.3-np19py27_1
mistune: 0.5.1-py27_0
mock: 1.0.1-py27_0
multipledispatch: 0.4.7-py27_0
networkx: 1.9.1-py27_0
nltk: 3.0.2-np19py27_0
node-webkit: 0.10.1-0
nose: 1.3.4-py27_1
numba: 0.17.0-np19py27_0
numexpr: 2.3.1-np19py27_0
numpy: 1.9.2-py27_0
odo: 0.3.1-np19py27_0
openpyxl: 1.8.5-py27_0
pandas: 0.15.2-np19py27_1
patsy: 0.3.0-np19py27_0
pep8: 1.6.2-py27_0
pillow: 2.7.0-py27_1
ply: 3.4-py27_0
psutil: 2.2.1-py27_0
ptyprocess: 0.4-py27_0
py: 1.4.26-py27_0
pyasn1: 0.1.7-py27_0
pyaudio: 0.2.7-py27_0
pycosat: 0.6.1-py27_0
pycparser: 2.10-py27_0
pycrypto: 2.6.1-py27_0
pycurl: 7.19.5.1-py27_0
pyflakes: 0.8.1-py27_0
pygments: 2.0.2-py27_0
pyopenssl: 0.14-py27_0
pyparsing: 2.0.3-py27_0
pyqt: 4.11.3-py27_0
pytables: 3.1.1-np19py27_2
pytest: 2.6.4-py27_0
python-dateutil: 2.4.1-py27_0
python.app: 1.2-py27_3
pytz: 2015.2-py27_0
pyyaml: 3.11-py27_0
pyzmq: 14.5.0-py27_0
qt: 4.8.6-0
redis: 2.6.9-0
redis-py: 2.10.3-py27_0
requests: 2.6.0-py27_0
rope: 0.9.4-py27_1
runipy: 0.1.3-py27_0
scikit-image: 0.11.2-np19py27_0
scikit-learn: 0.15.2-np19py27_0
scipy: 0.15.1-np19py27_0
sip: 4.16.5-py27_0
six: 1.9.0-py27_0
sockjs-tornado: 1.0.1-py27_0
sphinx: 1.2.3-py27_0
spyder: 2.3.4-py27_1
spyder-app: 2.3.4-py27_0
sqlalchemy: 0.9.9-py27_0
ssl_match_hostname: 3.4.0.2-py27_0
statsmodels: 0.6.1-np19py27_0
sympy: 0.7.6-py27_0
terminado: 0.5-py27_0
toolz: 0.7.1-py27_0
tornado: 4.1-py27_0
ujson: 1.33-py27_0
unicodecsv: 0.9.4-py27_0
werkzeug: 0.10.1-py27_0
xlrd: 0.9.3-py27_0
xlsxwriter: 0.6.7-py27_0
xlwings: 0.3.4-py27_0
xlwt: 0.7.5-py27_0
yaml: 0.1.4-1
zeromq: 4.0.4-0
The following packages will be DOWNGRADED:
pip: 6.1.1-py27_0 --> 6.0.8-py27_0
setuptools: 15.2-py27_0 --> 14.3-py27_0
Unlinking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py2a:
The following NEW packages will be INSTALLED:
alabaster: 0.7.3-py27_0
babel: 1.3-py27_0
snowballstemmer: 1.2.0-py27_0
sphinx_rtd_theme: 0.1.7-py27_0
The following packages will be UPDATED:
astropy: 1.0.1-np19py27_0 --> 1.0.2-np19py27_0
binstar: 0.10.1-py27_3 --> 0.10.3-py27_0
blaze-core: 0.7.3-np19py27_0 --> 0.8.0-np19py27_0
bokeh: 0.8.1-np19py27_1 --> 0.8.2-np19py27_0
boto: 2.36.0-py27_0 --> 2.38.0-py27_0
cryptography: 0.8-py27_0 --> 0.8.2-py27_1
datashape: 0.4.4-np19py27_1 --> 0.4.5-np19py27_0
freetype: 2.5.2-0 --> 2.5.2-1
futures: 2.2.0-py27_0 --> 3.0.2-py27_0
greenlet: 0.4.5-py27_0 --> 0.4.6-py27_0
h5py: 2.4.0-np19py27_0 --> 2.5.0-np19py27_0
ipython: 3.0.0-py27_0 --> 3.1.0-py27_0
ipython-notebook: 3.0.0-py27_1 --> 3.1.0-py27_1
ipython-qtconsole: 3.0.0-py27_0 --> 3.1.0-py27_0
llvmlite: 0.2.2-py27_1 --> 0.4.0-py27_0
lxml: 3.4.2-py27_0 --> 3.4.4-py27_0
mistune: 0.5.1-py27_0 --> 0.5.1-py27_1
nose: 1.3.4-py27_1 --> 1.3.6-py27_0
numba: 0.17.0-np19py27_0 --> 0.18.2-np19py27_1
odo: 0.3.1-np19py27_0 --> 0.3.2-np19py27_0
openpyxl: 1.8.5-py27_0 --> 2.0.2-py27_0
pandas: 0.15.2-np19py27_1 --> 0.16.1-np19py27_0
pip: 6.0.8-py27_0 --> 6.1.1-py27_0
ply: 3.4-py27_0 --> 3.6-py27_0
pycparser: 2.10-py27_0 --> 2.12-py27_0
pyopenssl: 0.14-py27_0 --> 0.15.1-py27_0
pytest: 2.6.4-py27_0 --> 2.7.0-py27_0
python-dateutil: 2.4.1-py27_0 --> 2.4.2-py27_0
pytz: 2015.2-py27_0 --> 2015.4-py27_0
pyzmq: 14.5.0-py27_0 --> 14.6.0-py27_0
qt: 4.8.6-0 --> 4.8.6-2
requests: 2.6.0-py27_0 --> 2.7.0-py27_0
scikit-image: 0.11.2-np19py27_0 --> 0.11.3-np19py27_0
scikit-learn: 0.15.2-np19py27_0 --> 0.16.1-np19py27_0
setuptools: 14.3-py27_0 --> 15.2-py27_0
sphinx: 1.2.3-py27_0 --> 1.3.1-py27_0
sqlalchemy: 0.9.9-py27_0 --> 1.0.4-py27_0
toolz: 0.7.1-py27_0 --> 0.7.2-py27_0
werkzeug: 0.10.1-py27_0 --> 0.10.4-py27_0
xlsxwriter: 0.6.7-py27_0 --> 0.7.2-py27_0
xlwings: 0.3.4-py27_0 --> 0.3.5-py27_0
xlwt: 0.7.5-py27_0 --> 1.0.0-py27_0
zeromq: 4.0.4-0 --> 4.0.5-0
Unlinking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
Fetching package metadata: ..........
Solving package specifications: .............
Package plan for installation in environment /data/apps/anaconda/envs/py3a:
The following NEW packages will be INSTALLED:
openssl: 1.0.1k-1
pip: 6.1.1-py34_0
python: 3.4.3-0
readline: 6.2-2
setuptools: 15.2-py34_0
sqlite: 3.8.4.1-1
tk: 8.5.18-0
xz: 5.0.5-0
zlib: 1.2.8-0
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
#
# To activate this environment, use:
# $ source activate py3a
#
# To deactivate this environment, use:
# $ source deactivate
#
Fetching package metadata: ..........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda/envs/py2a:
The following packages will be DOWNGRADED:
astropy: 1.0.2-np19py27_0 --> 1.0.1-np19py27_0
binstar: 0.10.3-py27_0 --> 0.10.1-py27_3
blaze-core: 0.8.0-np19py27_0 --> 0.7.3-np19py27_0
bokeh: 0.8.2-np19py27_0 --> 0.8.1-np19py27_1
boto: 2.38.0-py27_0 --> 2.36.0-py27_0
cryptography: 0.8.2-py27_1 --> 0.8-py27_0
datashape: 0.4.5-np19py27_0 --> 0.4.4-np19py27_1
freetype: 2.5.2-1 --> 2.5.2-0
futures: 3.0.2-py27_0 --> 2.2.0-py27_0
greenlet: 0.4.6-py27_0 --> 0.4.5-py27_0
h5py: 2.5.0-np19py27_0 --> 2.4.0-np19py27_0
ipython: 3.1.0-py27_0 --> 3.0.0-py27_0
ipython-notebook: 3.1.0-py27_1 --> 3.0.0-py27_1
ipython-qtconsole: 3.1.0-py27_0 --> 3.0.0-py27_0
llvmlite: 0.4.0-py27_0 --> 0.2.2-py27_1
lxml: 3.4.4-py27_0 --> 3.4.2-py27_0
mistune: 0.5.1-py27_1 --> 0.5.1-py27_0
nose: 1.3.6-py27_0 --> 1.3.4-py27_1
numba: 0.18.2-np19py27_1 --> 0.17.0-np19py27_0
odo: 0.3.2-np19py27_0 --> 0.3.1-np19py27_0
openpyxl: 2.0.2-py27_0 --> 1.8.5-py27_0
pandas: 0.16.1-np19py27_0 --> 0.15.2-np19py27_1
pip: 6.1.1-py27_0 --> 6.0.8-py27_0
ply: 3.6-py27_0 --> 3.4-py27_0
pycparser: 2.12-py27_0 --> 2.10-py27_0
pyopenssl: 0.15.1-py27_0 --> 0.14-py27_0
pytest: 2.7.0-py27_0 --> 2.6.4-py27_0
python-dateutil: 2.4.2-py27_0 --> 2.4.1-py27_0
pytz: 2015.4-py27_0 --> 2015.2-py27_0
pyzmq: 14.6.0-py27_0 --> 14.5.0-py27_0
qt: 4.8.6-2 --> 4.8.6-0
requests: 2.7.0-py27_0 --> 2.6.0-py27_0
scikit-image: 0.11.3-np19py27_0 --> 0.11.2-np19py27_0
scikit-learn: 0.16.1-np19py27_0 --> 0.15.2-np19py27_0
setuptools: 15.2-py27_0 --> 14.3-py27_0
sphinx: 1.3.1-py27_0 --> 1.2.3-py27_0
sqlalchemy: 1.0.4-py27_0 --> 0.9.9-py27_0
toolz: 0.7.2-py27_0 --> 0.7.1-py27_0
werkzeug: 0.10.4-py27_0 --> 0.10.1-py27_0
xlsxwriter: 0.7.2-py27_0 --> 0.6.7-py27_0
xlwings: 0.3.5-py27_0 --> 0.3.4-py27_0
xlwt: 1.0.0-py27_0 --> 0.7.5-py27_0
zeromq: 4.0.5-0 --> 4.0.4-0
Unlinking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
Linking packages ...
[ COMPLETE ]|###########################################################################################################| 100%
Fetching package metadata: ..........
Solving package specifications: .
# All requested packages already installed.
# packages in environment at /data/apps/anaconda/envs/py3a:
#
openssl 1.0.1k 1
pip 6.1.1 py34_0
python 3.4.3 0
readline 6.2 2
setuptools 15.2 py34_0
sqlite 3.8.4.1 1
tk 8.5.18 0
xz 5.0.5 0
zlib 1.2.8 0
If I want to test against a clean environment, I make a clone:
src_prefix: '/data/apps/anaconda/1.3.1/envs/py2.6'
dst_prefix: '/Users/mforbes/current/blog/Nikola/mmfblog/posts/_envs/py2.6'
Packages: 8
Files: 0
Fetching package metadata: ..........
Linking packages ...
[ COMPLETE ]|##################################################| 100%
#
# To activate this environment, use:
# $ source activate /Users/mforbes/current/blog/Nikola/mmfblog/posts/_envs/py2.6
#
# To deactivate this environment, use:
# $ source deactivate
#
Jupyter
I install Jupyter into it's own environment and then use the following alias to launch it. This allows me to launch it in any environment without having to install it. To use those environments as their own kernel, make sure you include the ipykernel
package in the environment and then the nb_conda
package in the jupyter environment.
Sometimes I have difficulty getting extensions working. The following may help:
Configuration
To see where Jupyter configuration files go, run
I add the following kernel so I can seamlessly match with CoCalc.
Anaconda Cloud
Once you have useful environments, you can push them to Anaconda Cloud so that you or others can use them:
Once this is done, you can install the environment with one of:
Clean
The Conda package cache can help speed the creation of new environments, but can take up quite a bit of disk space. One can reclaim this with conda clean
:
Cache location: /data/apps/anaconda/1.3.1/pkgs
Will remove the following tarballs:
_license-1.1-py27_0.tar.bz2 72 KB
abstract-rendering-0.5.1-np19py26_0.tar.bz2 42 KB
abstract-rendering-0.5.1-np19py27_0.tar.bz2 42 KB
accelerate-1.7.0-np19py27_p0.tar.bz2 4 KB
anaconda-2.1.0-np19py27_0.tar.bz2 3 KB
anaconda-2.2.0-np19py26_0.tar.bz2 3 KB
anaconda-2.2.0-np19py27_0.tar.bz2 3 KB
appscript-1.0.1-py26_0.tar.bz2 122 KB
appscript-1.0.1-py27_0.tar.bz2 122 KB
argcomplete-0.8.1-py27_0.tar.bz2 27 KB
argcomplete-0.8.4-py26_0.tar.bz2 28 KB
argcomplete-0.8.4-py27_0.tar.bz2 28 KB
argparse-1.3.0-py26_0.tar.bz2 34 KB
astropy-0.4.2-np19py27_0.tar.bz2 4.8 MB
astropy-1.0.1-np19py26_0.tar.bz2 5.1 MB
astropy-1.0.1-np19py27_0.tar.bz2 5.0 MB
atom-0.3.9-py27_0.tar.bz2 111 KB
bcolz-0.8.1-np19py26_0.tar.bz2 343 KB
bcolz-0.8.1-np19py27_0.tar.bz2 345 KB
beautiful-soup-4.3.2-py26_0.tar.bz2 109 KB
beautiful-soup-4.3.2-py27_0.tar.bz2 109 KB
binstar-0.10.1-py27_3.tar.bz2 74 KB
binstar-0.7.1-py27_0.tar.bz2 73 KB
bitarray-0.8.1-py26_0.tar.bz2 54 KB
blaze-0.6.3-np19py27_0.tar.bz2 124 KB
blaze-core-0.7.3-np19py26_0.tar.bz2 304 KB
blaze-core-0.7.3-np19py27_0.tar.bz2 305 KB
blz-0.6.2-np19py26_0.tar.bz2 319 KB
blz-0.6.2-np19py27_0.tar.bz2 342 KB
bokeh-0.6.1-np19py27_0.tar.bz2 2.9 MB
bokeh-0.8.1-np19py27_1.tar.bz2 13.5 MB
boto-2.32.1-py27_0.tar.bz2 1.2 MB
boto-2.36.0-py26_0.tar.bz2 1.3 MB
boto-2.36.0-py27_0.tar.bz2 1.3 MB
cdecimal-2.3-py26_0.tar.bz2 139 KB
cdecimal-2.3-py27_0.tar.bz2 140 KB
certifi-14.05.14-py26_0.tar.bz2 154 KB
certifi-14.05.14-py27_0.tar.bz2 154 KB
cffi-0.8.6-py27_0.tar.bz2 111 KB
cffi-0.9.2-py26_0.tar.bz2 115 KB
cffi-0.9.2-py27_0.tar.bz2 115 KB
chaco-4.4.1-np19py27_0.tar.bz2 856 KB
clyent-0.3.4-py27_0.tar.bz2 13 KB
colorama-0.3.1-py27_0.tar.bz2 15 KB
colorama-0.3.3-py26_0.tar.bz2 17 KB
colorama-0.3.3-py27_0.tar.bz2 17 KB
conda-3.10.1-py27_0.tar.bz2 164 KB
conda-3.7.0-py27_0.tar.bz2 154 KB
conda-3.7.1-py27_0.tar.bz2 155 KB
conda-3.7.3-py27_0.tar.bz2 156 KB
conda-3.7.4-py27_0.tar.bz2 160 KB
conda-3.8.3-py27_0.tar.bz2 162 KB
conda-3.8.4-py27_0.tar.bz2 163 KB
conda-3.9.1-py27_0.tar.bz2 164 KB
conda-env-2.0.1-py27_0.tar.bz2 14 KB
conda-env-2.1.0-py27_0.tar.bz2 14 KB
conda-env-2.1.2-py27_0.tar.bz2 15 KB
conda-env-2.1.3-py27_0.tar.bz2 15 KB
conda-env-2.1.4-py27_0.tar.bz2 15 KB
configobj-5.0.6-py26_0.tar.bz2 49 KB
configobj-5.0.6-py27_0.tar.bz2 49 KB
cryptography-0.5.4-py27_0.tar.bz2 262 KB
cryptography-0.8-py26_0.tar.bz2 348 KB
cryptography-0.8-py27_0.tar.bz2 349 KB
cudatoolkit-6.0-p0.tar.bz2 171.4 MB
curl-7.38.0-0.tar.bz2 361 KB
cython-0.21-py27_0.tar.bz2 2.2 MB
cython-0.22-py26_0.tar.bz2 2.2 MB
cython-0.22-py27_0.tar.bz2 2.2 MB
cytoolz-0.7.0-py27_0.tar.bz2 145 KB
cytoolz-0.7.2-py26_0.tar.bz2 210 KB
cytoolz-0.7.2-py27_0.tar.bz2 211 KB
datashape-0.3.0-np19py27_1.tar.bz2 83 KB
datashape-0.4.4-np19py26_1.tar.bz2 95 KB
datashape-0.4.4-np19py27_1.tar.bz2 95 KB
decorator-3.4.0-py26_0.tar.bz2 8 KB
decorator-3.4.0-py27_0.tar.bz2 8 KB
docutils-0.12-py26_0.tar.bz2 635 KB
docutils-0.12-py27_0.tar.bz2 636 KB
dynd-python-0.6.5-np19py26_0.tar.bz2 443 KB
dynd-python-0.6.5-np19py27_0.tar.bz2 442 KB
enable-4.3.0-np19py27_2.tar.bz2 1.4 MB
enaml-0.9.8-py27_0.tar.bz2 657 KB
enum34-1.0.4-py26_0.tar.bz2 48 KB
enum34-1.0.4-py27_0.tar.bz2 48 KB
fastcache-1.0.2-py26_0.tar.bz2 23 KB
fastcache-1.0.2-py27_0.tar.bz2 23 KB
flake8-2.3.0-py27_0.tar.bz2 25 KB
flask-0.10.1-py26_1.tar.bz2 129 KB
freetype-2.5.2-0.tar.bz2 691 KB
funcsigs-0.4-py26_0.tar.bz2 19 KB
funcsigs-0.4-py27_0.tar.bz2 19 KB
future-0.13.1-py27_0.tar.bz2 877 KB
futures-2.1.6-py27_0.tar.bz2 20 KB
futures-2.2.0-py26_0.tar.bz2 21 KB
futures-2.2.0-py27_0.tar.bz2 21 KB
gevent-1.0.1-py26_0.tar.bz2 335 KB
gevent-websocket-0.9.3-py26_0.tar.bz2 24 KB
greenlet-0.4.4-py27_0.tar.bz2 14 KB
greenlet-0.4.5-py26_0.tar.bz2 14 KB
greenlet-0.4.5-py27_0.tar.bz2 14 KB
grin-1.2.1-py26_1.tar.bz2 23 KB
h5py-2.3.1-np19py27_0.tar.bz2 721 KB
h5py-2.4.0-np19py26_0.tar.bz2 672 KB
h5py-2.4.0-np19py27_0.tar.bz2 663 KB
hdf5-1.8.13-0.tar.bz2 1.5 MB
hdf5-1.8.13-1.tar.bz2 1.8 MB
hdf5-1.8.14-0.tar.bz2 1.5 MB
ipython-2.2.0-py27_1.tar.bz2 2.8 MB
ipython-2.3.0-py27_0.tar.bz2 2.8 MB
ipython-2.3.1-py27_0.tar.bz2 2.8 MB
ipython-3.0.0-py27_0.tar.bz2 3.3 MB
ipython-notebook-2.2.0-py27_0.tar.bz2 5 KB
ipython-notebook-2.3.1-py27_0.tar.bz2 5 KB
ipython-notebook-3.0.0-py27_1.tar.bz2 5 KB
ipython-qtconsole-2.2.0-py27_0.tar.bz2 4 KB
ipython-qtconsole-3.0.0-py27_0.tar.bz2 4 KB
itsdangerous-0.24-py26_0.tar.bz2 16 KB
itsdangerous-0.24-py27_0.tar.bz2 16 KB
jdcal-1.0-py26_0.tar.bz2 9 KB
jdcal-1.0-py27_0.tar.bz2 9 KB
jedi-0.8.1-py26_0.tar.bz2 171 KB
jedi-0.8.1-py27_0.tar.bz2 171 KB
jinja2-2.7.3-py26_1.tar.bz2 307 KB
jinja2-2.7.3-py27_1.tar.bz2 307 KB
jsonschema-2.4.0-py26_0.tar.bz2 52 KB
jsonschema-2.4.0-py27_0.tar.bz2 51 KB
kiwisolver-0.1.3-py27_0.tar.bz2 62 KB
launcher-1.0.0-1.tar.bz2 1.8 MB
launcher-1.0.0-2.tar.bz2 1.8 MB
libdynd-0.6.5-0.tar.bz2 3.9 MB
libtiff-4.0.2-1.tar.bz2 270 KB
llvmlite-0.2.2-py26_1.tar.bz2 5.9 MB
llvmlite-0.2.2-py27_1.tar.bz2 5.9 MB
llvmpy-0.12.7-py27_0.tar.bz2 512 KB
lxml-3.4.0-py27_0.tar.bz2 944 KB
lxml-3.4.2-py26_0.tar.bz2 943 KB
lxml-3.4.2-py27_0.tar.bz2 945 KB
markupsafe-0.23-py26_0.tar.bz2 22 KB
markupsafe-0.23-py27_0.tar.bz2 22 KB
matplotlib-1.4.0-np19py27_0.tar.bz2 41.0 MB
matplotlib-1.4.3-np19py26_1.tar.bz2 40.8 MB
matplotlib-1.4.3-np19py27_0.tar.bz2 40.9 MB
matplotlib-1.4.3-np19py27_1.tar.bz2 40.9 MB
mccabe-0.3-py27_1.tar.bz2 9 KB
mercurial-3.3.3-py27_0.tar.bz2 1.5 MB
mistune-0.5.1-py26_0.tar.bz2 19 KB
mistune-0.5.1-py27_0.tar.bz2 18 KB
mkl-11.1-np19py27_p3.tar.bz2 4 KB
mklfft-1.0-np19py27_p0.tar.bz2 30 KB
mock-1.0.1-py26_0.tar.bz2 36 KB
mock-1.0.1-py27_0.tar.bz2 36 KB
multipledispatch-0.4.7-py26_0.tar.bz2 11 KB
multipledispatch-0.4.7-py27_0.tar.bz2 11 KB
networkx-1.9.1-py26_0.tar.bz2 936 KB
networkx-1.9.1-py27_0.tar.bz2 934 KB
nltk-3.0.0-np19py27_0.tar.bz2 1.4 MB
nltk-3.0.2-np19py26_0.tar.bz2 1.5 MB
nltk-3.0.2-np19py27_0.tar.bz2 1.5 MB
node-webkit-0.10.1-0.tar.bz2 26.1 MB
nose-1.3.4-py26_1.tar.bz2 190 KB
nose-1.3.4-py27_0.tar.bz2 189 KB
nose-1.3.4-py27_1.tar.bz2 189 KB
numba-0.14.0-np19py27_0.tar.bz2 675 KB
numba-0.17.0-np19py26_0.tar.bz2 775 KB
numba-0.17.0-np19py27_0.tar.bz2 774 KB
numbapro-0.15.0-np19py27_p0.tar.bz2 128 KB
numbapro_cudalib-0.1-0.tar.bz2 1.3 MB
numexpr-2.3.1-np19py26_0.tar.bz2 99 KB
numexpr-2.3.1-np19py27_0.tar.bz2 99 KB
numexpr-2.3.1-np19py27_p0.tar.bz2 100 KB
numpy-1.9.0-py27_p0.tar.bz2 2.9 MB
numpy-1.9.1-py27_p0.tar.bz2 2.9 MB
numpy-1.9.2-py26_0.tar.bz2 2.9 MB
numpy-1.9.2-py27_0.tar.bz2 2.9 MB
odo-0.3.1-np19py26_0.tar.bz2 138 KB
odo-0.3.1-np19py27_0.tar.bz2 138 KB
openssl-1.0.1h-1.tar.bz2 2.3 MB
openssl-1.0.1j-4.tar.bz2 2.5 MB
openssl-1.0.1k-0.tar.bz2 2.5 MB
openssl-1.0.1k-1.tar.bz2 2.5 MB
ordereddict-1.1-py26_0.tar.bz2 4 KB
pandas-0.14.1-np19py27_0.tar.bz2 4.5 MB
pandas-0.15.2-np19py26_1.tar.bz2 4.7 MB
pandas-0.15.2-np19py27_0.tar.bz2 4.7 MB
pandas-0.15.2-np19py27_1.tar.bz2 4.7 MB
patsy-0.3.0-np19py26_0.tar.bz2 310 KB
patsy-0.3.0-np19py27_0.tar.bz2 311 KB
pep8-1.5.7-py27_0.tar.bz2 43 KB
pep8-1.6.2-py26_0.tar.bz2 46 KB
pep8-1.6.2-py27_0.tar.bz2 46 KB
pillow-2.7.0-py26_1.tar.bz2 448 KB
pillow-2.7.0-py27_0.tar.bz2 453 KB
pillow-2.7.0-py27_1.tar.bz2 452 KB
pip-6.0.6-py27_0.tar.bz2 1.5 MB
pip-6.0.8-py26_0.tar.bz2 1.5 MB
pip-6.0.8-py27_0.tar.bz2 1.5 MB
pip-6.0.8-py34_0.tar.bz2 1.6 MB
ply-3.4-py26_0.tar.bz2 67 KB
psutil-2.2.1-py26_0.tar.bz2 93 KB
psutil-2.2.1-py27_0.tar.bz2 93 KB
ptyprocess-0.4-py27_0.tar.bz2 19 KB
py-1.4.25-py27_0.tar.bz2 121 KB
py-1.4.26-py26_0.tar.bz2 121 KB
py-1.4.26-py27_0.tar.bz2 121 KB
pyasn1-0.1.7-py26_0.tar.bz2 47 KB
pyasn1-0.1.7-py27_0.tar.bz2 48 KB
pyaudio-0.2.7-py27_0.tar.bz2 60 KB
pycosat-0.6.1-py26_0.tar.bz2 56 KB
pycosat-0.6.1-py27_0.tar.bz2 56 KB
pycparser-2.10-py26_0.tar.bz2 144 KB
pycrypto-2.6.1-py26_0.tar.bz2 443 KB
pycurl-7.19.5-py27_1.tar.bz2 42 KB
pycurl-7.19.5.1-py26_0.tar.bz2 42 KB
pycurl-7.19.5.1-py27_0.tar.bz2 42 KB
pyflakes-0.8.1-py26_0.tar.bz2 50 KB
pygments-2.0.2-py26_0.tar.bz2 1.0 MB
pygments-2.0.2-py27_0.tar.bz2 1.0 MB
pyopenssl-0.14-py26_0.tar.bz2 122 KB
pyopenssl-0.14-py27_0.tar.bz2 122 KB
pyparsing-2.0.3-py26_0.tar.bz2 63 KB
pyparsing-2.0.3-py27_0.tar.bz2 63 KB
pyqt-4.11.3-py26_0.tar.bz2 4.0 MB
pyqt-4.11.3-py27_0.tar.bz2 4.0 MB
pytables-3.1.1-np19py26_2.tar.bz2 1.4 MB
pytables-3.1.1-np19py27_0.tar.bz2 1.4 MB
pytables-3.1.1-np19py27_2.tar.bz2 1.4 MB
pytest-2.6.3-py27_0.tar.bz2 177 KB
pytest-2.6.4-py26_0.tar.bz2 178 KB
pytest-2.6.4-py27_0.tar.bz2 178 KB
python-2.6.9-1.tar.bz2 9.0 MB
python-2.7.8-1.tar.bz2 9.8 MB
python-2.7.9-1.tar.bz2 11.3 MB
python-3.4.3-0.tar.bz2 19.1 MB
python-dateutil-2.4.1-py26_0.tar.bz2 217 KB
python-dateutil-2.4.1-py27_0.tar.bz2 218 KB
python.app-1.2-py26_3.tar.bz2 7 KB
python.app-1.2-py27_3.tar.bz2 7 KB
pytz-2014.7-py27_0.tar.bz2 175 KB
pytz-2014.9-py27_0.tar.bz2 175 KB
pytz-2015.2-py26_0.tar.bz2 175 KB
pytz-2015.2-py27_0.tar.bz2 175 KB
pyyaml-3.11-py26_0.tar.bz2 146 KB
pyzmq-14.3.1-py27_0.tar.bz2 275 KB
pyzmq-14.4.1-py27_0.tar.bz2 290 KB
pyzmq-14.5.0-py26_0.tar.bz2 290 KB
pyzmq-14.5.0-py27_0.tar.bz2 290 KB
qt-4.8.6-0.tar.bz2 39.0 MB
redis-py-2.10.3-py26_0.tar.bz2 70 KB
redis-py-2.10.3-py27_0.tar.bz2 70 KB
requests-2.4.1-py27_0.tar.bz2 577 KB
requests-2.4.3-py27_0.tar.bz2 578 KB
requests-2.5.0-py27_0.tar.bz2 586 KB
requests-2.5.1-py27_0.tar.bz2 586 KB
requests-2.5.3-py27_0.tar.bz2 592 KB
requests-2.6.0-py26_0.tar.bz2 593 KB
requests-2.6.0-py27_0.tar.bz2 594 KB
rope-0.9.4-py26_1.tar.bz2 225 KB
runipy-0.1.1-py27_0.tar.bz2 11 KB
runipy-0.1.3-py27_0.tar.bz2 9 KB
scikit-image-0.10.1-np19py27_0.tar.bz2 14.4 MB
scikit-image-0.11.2-np19py26_0.tar.bz2 16.1 MB
scikit-image-0.11.2-np19py27_0.tar.bz2 16.1 MB
scikit-learn-0.15.2-np19py26_0.tar.bz2 3.1 MB
scikit-learn-0.15.2-np19py27_0.tar.bz2 3.1 MB
scikit-learn-0.15.2-np19py27_p0.tar.bz2 3.1 MB
scipy-0.14.0-np19py27_p0.tar.bz2 11.5 MB
scipy-0.15.1-np19py26_0.tar.bz2 12.0 MB
scipy-0.15.1-np19py27_0.tar.bz2 12.1 MB
scipy-0.15.1-np19py27_p0.tar.bz2 12.1 MB
seaborn-0.5.1-np19py27_0.tar.bz2 185 KB
setuptools-11.3.1-py27_0.tar.bz2 430 KB
setuptools-12.0.5-py27_0.tar.bz2 436 KB
setuptools-12.2-py27_0.tar.bz2 437 KB
setuptools-13.0.2-py27_0.tar.bz2 436 KB
setuptools-14.0-py26_0.tar.bz2 438 KB
setuptools-14.0-py27_0.tar.bz2 435 KB
setuptools-14.0-py34_0.tar.bz2 440 KB
setuptools-14.3-py26_0.tar.bz2 438 KB
setuptools-14.3-py27_0.tar.bz2 435 KB
setuptools-15.0-py26_0.tar.bz2 439 KB
setuptools-15.0-py27_0.tar.bz2 436 KB
setuptools-5.8-py27_0.tar.bz2 426 KB
setuptools-7.0-py27_0.tar.bz2 436 KB
sip-4.16.5-py26_0.tar.bz2 234 KB
sip-4.16.5-py27_0.tar.bz2 234 KB
six-1.8.0-py27_0.tar.bz2 15 KB
six-1.9.0-py26_0.tar.bz2 16 KB
six-1.9.0-py27_0.tar.bz2 16 KB
sockjs-tornado-1.0.1-py26_0.tar.bz2 31 KB
sockjs-tornado-1.0.1-py27_0.tar.bz2 31 KB
sphinx-1.2.3-py26_0.tar.bz2 1004 KB
sphinx-1.2.3-py27_0.tar.bz2 1005 KB
spyder-2.3.1-py27_1.tar.bz2 4.0 MB
spyder-2.3.4-py27_1.tar.bz2 4.0 MB
spyder-app-2.3.1-py27_0.tar.bz2 7 KB
spyder-app-2.3.4-py27_0.tar.bz2 7 KB
sqlalchemy-0.9.7-py27_0.tar.bz2 1.2 MB
sqlalchemy-0.9.9-py26_0.tar.bz2 1.2 MB
sqlalchemy-0.9.9-py27_0.tar.bz2 1.2 MB
sqlite-3.8.4.1-1.tar.bz2 824 KB
ssl_match_hostname-3.4.0.2-py26_0.tar.bz2 6 KB
statsmodels-0.5.0-np19py27_2.tar.bz2 5.4 MB
statsmodels-0.6.1-np19py26_0.tar.bz2 4.6 MB
statsmodels-0.6.1-np19py27_0.tar.bz2 4.6 MB
sympy-0.7.6-py26_0.tar.bz2 6.1 MB
sympy-0.7.6-py27_0.tar.bz2 6.2 MB
terminado-0.5-py27_0.tar.bz2 17 KB
tk-8.5.18-0.tar.bz2 1.9 MB
toolz-0.7.0-py27_0.tar.bz2 27 KB
toolz-0.7.1-py26_0.tar.bz2 27 KB
toolz-0.7.1-py27_0.tar.bz2 27 KB
tornado-4.0.2-py27_0.tar.bz2 449 KB
tornado-4.1-py26_0.tar.bz2 475 KB
tornado-4.1-py27_0.tar.bz2 474 KB
ujson-1.33-py26_0.tar.bz2 19 KB
ujson-1.33-py27_0.tar.bz2 19 KB
unicodecsv-0.9.4-py26_0.tar.bz2 18 KB
unicodecsv-0.9.4-py27_0.tar.bz2 17 KB
unittest2-0.8.0-py26_0.tar.bz2 136 KB
werkzeug-0.10.1-py26_0.tar.bz2 373 KB
werkzeug-0.10.1-py27_0.tar.bz2 374 KB
werkzeug-0.9.6-py27_1.tar.bz2 488 KB
xlrd-0.9.3-py26_0.tar.bz2 158 KB
xlsxwriter-0.5.7-py27_0.tar.bz2 163 KB
xlsxwriter-0.6.7-py26_0.tar.bz2 174 KB
xlsxwriter-0.6.7-py27_0.tar.bz2 175 KB
xlwings-0.3.4-py26_0.tar.bz2 149 KB
xlwings-0.3.4-py27_0.tar.bz2 149 KB
xlwt-0.7.5-py26_0.tar.bz2 172 KB
xz-5.0.5-0.tar.bz2 132 KB
yt-3.0.2-np19py27_0.tar.bz2 3.0 MB
zlib-1.2.8-0.tar.bz2 83 KB
zope.interface-4.1.1-py27_0.tar.bz2 140 KB
-------------------------------------------------------
Total: 793.2 MB
Dry run: exiting
Basic Packages and Configuration
Here is a list of basic packages that I always use. I install these in two custom environments work2
and work3
. I also make a symlink called work
which points to the appropriate environment in which I am currently working.
First, however, I install the following in the default conda environment:
Unsetting IPYTHONDIR
Unsetting TALENT2015DIR
Fetching package metadata ...........
.
Package plan for installation in environment /data/apps/anaconda:
The following packages will be REMOVED:
anaconda-client: 1.5.1-py27_0 defaults
argcomplete: 1.0.0-py27_1 defaults
clyent: 1.2.2-py27_0 defaults
conda-build: 2.0.1-py27_0 defaults
enum34: 1.1.6-py27_0 defaults
filelock: 2.0.6-py27_0 defaults
jinja2: 2.8-py27_1 defaults
markupsafe: 0.23-py27_2 defaults
mercurial: 3.9-py27_0 defaults
pip: 8.1.2-py27_0 defaults
pycrypto: 2.6.1-py27_4 defaults
python-dateutil: 2.5.3-py27_0 defaults
pytz: 2016.6.1-py27_0 defaults
readline: 6.2-2 defaults
ruamel_yaml: 0.11.14-py27_0 defaults
setuptools: 27.2.0-py27_0 defaults
six: 1.10.0-py27_0 defaults
sqlite: 3.13.0-0 defaults
tk: 8.5.18-0 defaults
wheel: 0.29.0-py27_0 defaults
yaml: 0.1.6-0 defaults
zlib: 1.2.8-3 defaults
The following packages will be DOWNGRADED due to dependency conflicts:
conda: 4.2.7-py27_0 defaults --> 3.12.0-py27_0 defaults
conda-env: 2.6.0-0 defaults --> 2.1.4-py27_0 defaults
openssl: 1.0.2i-0 defaults --> 1.0.1k-1 defaults
pycosat: 0.6.1-py27_1 defaults --> 0.6.1-py27_0 defaults
python: 2.7.12-1 defaults --> 2.7.9-1 defaults
pyyaml: 3.12-py27_0 defaults --> 3.11-py27_0 defaults
requests: 2.11.1-py27_0 defaults --> 2.7.0-py27_0 defaults
Unlinking packages ...
[ COMPLETE ]|##################################################| 100%
Linking packages ...
[ COMPLETE ]|##################################################| 100%
Fetching package metadata: ........
Solving package specifications: .
Package plan for installation in environment /data/apps/anaconda:
The following packages will be downloaded:
package | build
---------------------------|-----------------
sqlite-3.13.0 | 1 1.4 MB conda-forge
enum34-1.1.6 | py27_1 54 KB conda-forge
------------------------------------------------------------
Total: 1.4 MB
The following NEW packages will be INSTALLED:
enum34: 1.1.6-py27_1 conda-forge
pip: 8.1.2-py27_0 defaults
readline: 6.2-2 defaults
ruamel_yaml: 0.11.14-py27_0 defaults
setuptools: 27.2.0-py27_0 defaults
sqlite: 3.13.0-1 conda-forge
tk: 8.5.18-0 defaults
wheel: 0.29.0-py27_0 defaults
yaml: 0.1.6-0 defaults
zlib: 1.2.8-3 defaults
The following packages will be UPDATED:
conda: 3.12.0-py27_0 defaults --> 4.2.7-py27_0 defaults
conda-env: 2.1.4-py27_0 defaults --> 2.6.0-0 defaults
openssl: 1.0.1k-1 defaults --> 1.0.2i-0 defaults
pycosat: 0.6.1-py27_0 defaults --> 0.6.1-py27_1 defaults
python: 2.7.9-1 defaults --> 2.7.12-1 defaults
requests: 2.7.0-py27_0 defaults --> 2.11.1-py27_0 defaults
Fetching packages ...
sqlite-3.13.0- 100% |###############################| Time: 0:00:01 1.06 MB/s
enum34-1.1.6-p 100% |###############################| Time: 0:00:00 307.90 kB/s
Extracting packages ...
[ COMPLETE ]|##################################################| 100%
Unlinking packages ...
[ COMPLETE ]|##################################################| 100%
Linking packages ...
[ COMPLETE ]|##################################################| 100%
Fetching package metadata ...........
Solving package specifications: ..........
Package plan for installation in environment /data/apps/anaconda:
The following NEW packages will be INSTALLED:
anaconda-client: 1.5.1-py27_0 defaults
argcomplete: 1.0.0-py27_1 defaults
clyent: 1.2.2-py27_0 defaults
conda-build: 2.0.1-py27_0 defaults
filelock: 2.0.6-py27_0 defaults
jinja2: 2.8-py27_1 defaults
markupsafe: 0.23-py27_2 defaults
mercurial: 3.9-py27_0 defaults
pycrypto: 2.6.1-py27_4 defaults
python-dateutil: 2.5.3-py27_0 defaults
pytz: 2016.6.1-py27_0 defaults
six: 1.10.0-py27_0 defaults
The following packages will be UPDATED:
pyyaml: 3.11-py27_0 defaults --> 3.12-py27_0 defaults
Unlinking packages ...
[ COMPLETE ]|##################################################| 100%
Linking packages ...
[ COMPLETE ]|##################################################| 100%
Fetching package metadata ...........
Solving package specifications: ..........
Package plan for installation in environment /data/apps/anaconda:
The following packages will be SUPERCEDED by a higher-priority channel:
enum34: 1.1.6-py27_1 https://conda.binstar.org/conda-forge --> 1.1.6-py27_0 defaults
sqlite: 3.13.0-1 https://conda.binstar.org/conda-forge --> 3.13.0-0 defaults
Unlinking packages ...
[ COMPLETE ]|##################################################| 100%
Linking packages ...
[ COMPLETE ]|##################################################| 100%
# packages in environment at /data/apps/anaconda:
#
anaconda-client 1.5.1 py27_0 defaults
argcomplete 1.0.0 py27_1 defaults
clyent 1.2.2 py27_0 defaults
conda 4.2.7 py27_0 defaults
conda-build 2.0.1 py27_0 defaults
conda-env 2.6.0 0 defaults
enum34 1.1.6 py27_0 defaults
filelock 2.0.6 py27_0 defaults
jinja2 2.8 py27_1 defaults
markupsafe 0.23 py27_2 defaults
mercurial 3.9 py27_0 defaults
openssl 1.0.2i 0 defaults
pip 8.1.2 py27_0 defaults
pycosat 0.6.1 py27_1 defaults
pycrypto 2.6.1 py27_4 defaults
python 2.7.12 1 defaults
python-dateutil 2.5.3 py27_0 defaults
pytz 2016.6.1 py27_0 defaults
pyyaml 3.12 py27_0 defaults
readline 6.2 2 defaults
requests 2.11.1 py27_0 defaults
ruamel_yaml 0.11.14 py27_0 defaults
setuptools 27.2.0 py27_0 defaults
six 1.10.0 py27_0 defaults
sqlite 3.13.0 0 defaults
tk 8.5.18 0 defaults
wheel 0.29.0 py27_0 defaults
yaml 0.1.6 0 defaults
zlib 1.2.8 3 defaults
Now I add the default path to both the start and end of %PATH
with different names in my .bashrc
file:
The reason for the latter addition is:
It will be a fallback when activating other environments so I can still use mercurial.
By giving it a different name it will not be removed when
. deactivate
is called.
Activate and Deactivate Scripts
When sourcing the activate and deactivate scripts, files "$CONDA_ROOT/etc/conda/activate.d/*.sh"
and "$CONDA_ROOT/etc/conda/deactivate.d/*.sh"
will be sourced. This allows one to perform additional configurations such as setting IPYTHONDIR
. To find CONDA_ROOT
programatically use:
For example, the following two scripts to set and reset (once) IPYTHONDIR
:
/data/apps/anaconda/envs/work/etc/conda/activate.d/set_ipythondir.sh
/data/apps/anaconda/envs/work/etc/conda/deactivate.d/unset_ipythondir.sh
I make these files with a script like the following which I can run in the appropriate environment to set the .ipython
directory in the current folder as the IPYTHONDIR
for the environment. Note: It does some checks to make sure that an environment is active.
Development
If you are developing software, the conda-devenv
package might help. It allows you to maintain several dependent environment files for example. This might be useful when you want to have separate environment files for testing python 2 and python 3. Useful features include (from the docs):
Jinja 2 support: gives more flexibility to the environment definition, for example making it simple to conditionally add dependencies based on platform.
include other environment.devenv.yml files: this allows you to easily work in several dependent projects at the same time, managing a single conda environment with your dependencies.
Environment variables: you can define a environment: section with environment variables that should be defined when the environment is activated.
Packages and Dependencies
Making sure that you have all of the required packages installed can be a bit of a pain. I have toyed with three different types of strategies outlined below. I currently use method 1. when actively developing, then switch to a version that supports both 2. and 3.
Include the source code for projects you need as weak dependencies managed with the myrepos (
mr
) tool:Basically, I include a
.mrconfig
file which instructsmr
how to checkout the required projects:When I run
mr checkout
, this project will be cloned to_ext/pymmf
and I can then symlink the appropriate files to a top-level moduleln -s _ext/pymmf/mmf mmf
. If you usepymmf
in many projects, you can replace_ext/pymmf
with a simlink to an appropriate common location (but keep in mind that each project will be using the same revision then.)A small set of additional command can give
mr freeze
which tracks the specific verions. There are some bugs with this, but you can see an example in my mmfhg project, in particular in themrconfig
file.This approach is useful if you need to activately develop both the top level project and the subproject, but requires manual intervention to update etc. and is not suitable for general usage since collaborators will need to add myrepos to their toolchain.
Write a
setup.py
file and use this orpip
to manage the dependencies.This is a better choice for general distribution and collaboration, but still has a few warts. An advantage of this over the next option is that it will then work with PyPI.
Write a
meta.yaml
file and useconda
to manage dependencies.This is a good choice for general distribution if you want your package to be installable with
conda
from Anaconda Cloud.
Setuptools and Pip
The Python Packaging User Guide is supposed to provide the definitive guide for managing python packages. Its current recommendations for installing packages is to use pip
, so we would like to maintain that strategy. The basic idea here is to include a setup.py
file in your top level directory that specifies your dependencies (and example will be provided below). This is designed for and works well will packages published on PyPI but starts failing when you need to depend on projects that are not published (i.e. those hosted on github or bitbucket.)
Setup(.py) and Requirements(.txt)
Some of the issues are discussed in this rant but are centered around the issue of how to specify the location of code not available on PyPI. Both pip
and setuptools
support installation from version controlled sources. The recommended approach for this (see Setup vs. Requirements is to put these dependencies in a requirements.txt
file, but there are problems with this approach:
Users must run
pip install -r requirements.txt
explicitly rather than justpip install -e .
orpython setup.py develop
.This is probably not such a big deal as long as the install instructions are clear.
If you require a subproject that also has
requirements.txt
, there is no easy way of recursively parsing the subprojects requirements. (The requirements specified in the subprojectssetup.py
will get processed.The only solution I know to this second issue is to make sure your
requirements.txt
file is very complete, specifying all possible requirements recursively.Suppose that you use branches or tags in your code to mark versions. Now suppose that one project
A
that depends on another projectB
, and thatB
depends on a specific version ofC==0.9
. You dutifully include this in thesetup.py
files:However, at this point, neither
pip
norsetuptools
can installA
since neitherB
norC
are installed on PyPI. The recommended solution is to specify all of the dependences inA
'srequirements.txt
file:Installing
A
withpip install -r requirements.txt
will now installB
andC
, but the requirements are now broken. The packageC
for example will be installed at the latest version, even if this breaks theC==0.9
requirement byB
. This appears to be broken even if we provide the explicit versions in therequirements.txt
file:Thus we are left in the awkward position of having to make sure in project
A
that we pin the exact requirements we need in subprojectC
even though we do not (directly) depend on it.
The problem described above is consistent with the following roles of setup.py
and requirements.txt
:
The
install_requires
argument tosetup()
insetup.py
specifies what is required and version information should be used to specify what does not work (i.e. avoid this version).The
requirements.txt
specifies exactly one situation that does work.
In case of conflict, the second point here seems to override the first one (C-0.8
above gets installed even though the setup for B
specifies C==0.9
).
Thus, requirements.txt
is completely useless for specifying dependencies in a general way. The only solution here appears to be to carefully construct a requirements.txt
file whenever a project or its dependencies change. The following tools may help with this, but I am not happy with this solution:
pip freeze > requirements.txt
A Better Solution: Host your own Index
Can we get the benefits of the usual dependency resolution while using version controlled software? To do this, it seems that you need to host your packages through an index via one of the following approaches:
Upload your package to PyPI: This works, but requires a lot of discipline and maintenance to make sure your package is complete, tested, working, and properly described whenever you need to freeze it. The whole release process can be a pain, and submitting a bunch or random tools to PyPI is considered bad practice. (For one thing, there is a global namespace, so you might steal a useful name for a bunch of specialized tools where another package might have been able to better use it for the community.)
Host your own Package Index.
The latter approach seems at first to require running a web-server somewhere which is off-putting, but actually supports two quite reasonable solutions. The first is to package tarballs of your projects into a single directory with canonical names like C-0.8.tar.gz
, and C-0.9.tar.gz
and then point to this with the pip --find-links <dir>
option. (The tarballs can be produced with python setup.py sdist
and will get deposited in the dist
directory which you could symlink to the <dir>
specified above.)
The second solution is to provide a proper package index somewhere. This allows you to refer to additional locations, and in particular, allows you to refer to something like
This uses the packaging feature at bitbucket that will checkout version 0.9 from the repository and deliver it as a tarball. The resulting index file can be hosted somewhere globally and referred to with pip install --extra-index-url <url>
.
Package Index API
The Package Index "API" is basically a set of nested directories of the form packagename/version
with index.html
files that will describe how to download the package with links like those shown above.
This works, but is a PITA since it seems to require:
The whole nested directory structure (so you can't just manage a single file).
Requires that these index files be server from a proper web server that will dish them up when given a trailing slash
https://.../packagename/versions/
. I still don't know why they can't just also look for the index files. I have asked on the mailing list.
Visualizing Dependencies
Pip
Try the pipdeptree package. Unfortunately, this lists all dependencies in a conda environment.
Conda
Here is a strategy based on Eric Dill's render_env.py GIST. We use it to find all of the roots in an environment (packages upon which nothing depends).
Issues
Conda Performance
Conda can be very slow to resolve dependencies. An experimental project mamba attempts to speed this up.
Redundancy between Conda and Pip
The present workflow duplicates information in setup.py
for pip
and PyPI, and meta.yaml
for Conda. This is being discussed as part of the following Conda issue:
Building a Conda Package
For a simple example of a Conda package, see the following:
This is a simple python project I forked consisting of a single python file. To turn it into a Conda package, I added the following meta.yaml
YAML file, built, and uploaded it as described in Anaconda Cloud: Building Packages:
This follows a discussion about using conda-build to build a package without setup.py (since I wanted to minimally complicate the original package). Once this is built and committed, I can build it an uploaded to [my Conda channel'(https://anaconda.org/mforbes) as follows:
One gotcha: the conda build .
command above will attempt to download the source from the appropriate tag/branch on Github (since that is what we specified as a source). Thus, you must make sure to tag and push those tags:
When a Dependency is not Available to Conda
When you are making conda packages, all elements need to be conda-installable. Here is how to push a pip-installable package to your conda channel:
References
Testing
By including a section like the following, you can run tests when you issue the conda build
command. Some important notes though:
Conda now moves the working directory, so you need to specifically include the files you will test with the
source_files:
section.If you build from your source directory, be sure to clean out
__pycache__
directories (see Gotchas below).
This will do several things:
It will test that
import perists
works.It will create a test environment with the specified requirements.
It will run
py.test
.
If you do this locally (i.e. src: .
) then be sure to remove all __pycache__
, *.pyc
, and *.pyo
files:
Gotchas
Make sure you have the appropriate channels in your
~/.condarc
file. (There is currently no way to specify channels forconda build
.)The last entry is because sometimes things are not immediately available on my
mforbes
channel, even though I upload something toanaconda.org
. This is where they are built by default. This local channel can be made available by running:Don't run
conda build
from a conda environment. Make sure you are in the base environment.If you do this locally (i.e.
src: .
) then be sure to remove all__pycache__
,*.pyc
, and*.pyo
files:
Current Working Environments
I keep track of my working environments through a set of environment.*.yml
files which I host here:
Complete Install (21 July 2018)
Here is an example of a complete install on Mac OS X.
References
Python Packaging User Guide: This is the authoritative guide about packaging with "Last Reviewed" dates so you can be sure you are getting the latest information.
http://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/
http://tech.marksblogg.com/better-python-package-management.html: A nice discussion of pip usage.
https://www.colorado.edu/earthlab/2019/01/03/publishing-your-python-code-pip-and-conda-tips-and-best-practices: Some recent best practice notes.
Old Notes Etc.
TL:DR
Install miniconda with perhaps a few tools like mercurial, but use
conda create -n <env>
to create working environments to help maintain isolation for everything else.Create the environments from an
environment.yml
file for reproducibility.Make sure that
pip
is configured to not install packages in the user directory so that they instead go to the conda environments:
This setup requires activating the appropriate conda environment before working. There are three options for making commands available to all environments:
Added the base miniconda
bin/
at the end of your path in a special way so that special way so that you can fall back to these base commands. I do this for mercurial which I install in my base environment.Explicitly use
pip install --user
which will put files in~/.locals/bin
and~/.locals/lib
so that any current python environment can access them. I do this with Nikola for blogging.Create symlinks to conda-installed executables in
~/.locals/bin
or aliases to the appropriate environment. I use this, for example, with Jupyter.