Python: Difference between revisions
No edit summary |
No edit summary |
||
Line 84: | Line 84: | ||
<!--T:29--> | <!--T:29--> | ||
In the first invocation of the <tt>pip</tt> command above it isn't as obvious where the <tt>numpy</tt> module is being installed from. One might assume it is being installed from [https://pypi.org/ PyPI] but in the particular case of numpy it is actually being installed from a distribution package offered by Compute Canada. This distribution package is called a python [https://pythonwheels.com/ wheel]. It will install from Compute Canada's local wheel provided the package version Compute Canada provides is current. If the PyPI has a newer version, that version will be installed instead of the version Compute Canada provides. To disable this default | In the first invocation of the <tt>pip</tt> command above it isn't as obvious where the <tt>numpy</tt> module is being installed from. One might assume it is being installed from [https://pypi.org/ PyPI] but in the particular case of numpy it is actually being installed from a distribution package offered by Compute Canada. This distribution package is called a python [https://pythonwheels.com/ wheel]. It will install from Compute Canada's local wheel provided the package version Compute Canada provides is current. If the PyPI has a newer version, that version will be installed instead of the version Compute Canada provides. To disable this default behaviour and use the older Compute Canada specific wheel use the [https://pip.pypa.io/en/stable/reference/pip_wheel/#cmdoption-no-index <tt>--no-index</tt>] option. | ||
<!--T:30--> | <!--T:30--> |
Revision as of 20:13, 3 August 2018
Description
Python is an interpreted programming language with a design philosophy stressing the readability of code. Its syntax is simple and expressive. Python has an extensive, easy-to-use library of standard modules.
The capabilities of Python can be extended with modules developed by third parties. In general, to simplify operations, it is left up to individual users and groups to install these third-party modules in their own directories. However, most systems offer several versions of Python as well as tools to help you install the third-party modules that you need.
The following sections discuss the Python interpreter, and how to install and use modules.
Loading an interpreter
To discover the versions of Python available:
[name@server ~]$ module avail python
You can then load the version of your choice using module load. For example, to load Python 2.7 you can use the command
[name@server ~]$ module load python/2.7
SciPy stack
In addition to the base Python module, the SciPy package is also available as an environment module. The scipy-stack
module includes:
- NumPy
- SciPy
- Matplotlib
- dateutil
- pytz
- IPython
- pyzmq
- tornado
- pandas
- Sympy
- nose
If you want to use any of these Python modules, load a Python version of your choice and then load module scipy-stack
.
For more details, including version numbers of the contained packages, visit Scipy.org.
Creating and using a virtual environment
With each version of Python, we provide the tool virtualenv. This tool allows users to create virtual environments within which you can easily install Python modules. These environments allow one to install many versions of the same module, for example, or to compartmentalize a Python installation according to the needs of a specific project. We recommend that you create your Python virtual environment(s) in your home directory.
To create a virtual environment, enter the following command, where ENV is the name of the empty directory containing your environment:
[name@server ~]$ virtualenv ~/ENV
Once the virtual environment has been created, it must be activated:
[name@server ~]$ source ~/ENV/bin/activate
To exit the virtual environment, simply enter the command deactivate:
[name@server ~]$ deactivate
Installing modules
Once you have a virtual environment loaded, you will be able to run the pip command. This command takes care of compiling and installing most of Python modules and their dependencies. A comprehensive index of Python packages can be found at PyPI.
All of pip's commands are explained in detail in the user guide. We will cover only the most important commands and use the Numpy module as an example.
We first load the Python interpreter:
[name@server ~]$ module load python/2.7
We then activate the virtual environment, previously created using the virtualenv command:
[name@server ~]$ source ~/ENV/bin/activate
Finally, we install the latest stable version of Numpy:
[name@server ~]$ pip install numpy
If we wanted to install the development version of Numpy, we can also give a link toward its Git repository:
[name@server ~]$ pip install git+git://github.com/numpy/numpy.git
In the first invocation of the pip command above it isn't as obvious where the numpy module is being installed from. One might assume it is being installed from PyPI but in the particular case of numpy it is actually being installed from a distribution package offered by Compute Canada. This distribution package is called a python wheel. It will install from Compute Canada's local wheel provided the package version Compute Canada provides is current. If the PyPI has a newer version, that version will be installed instead of the version Compute Canada provides. To disable this default behaviour and use the older Compute Canada specific wheel use the --no-index option.
To see where the pip command is installing a python module from you can tell it to be more verbose with the -vvv option. Compute Canada provides python wheels for many common python modules which are configured to make the best use of the hardware and installed libraries on our clusters.
Listing available wheels
List currently available wheels with avail_wheels command. By default, it will:
- only show you the latest version of a specific package;
- only show you versions that are compatible with the python module (if one loaded), otherwise all python versions will be shown;
- only show you versions that are compatible with the CPU architecture that you are currently running on.
To list wheels containing "cdf" (case insensitive) in its name:
[name@server ~]$ avail_wheels --name "*cdf*"
name version build python arch
------- --------- ------- -------- ------
netCDF4 1.4.0 cp27 avx2
Or to list all available versions:
[name@server ~]$ avail_wheels --name "*cdf*" --all_version
name version build python arch
------- --------- ------- -------- ------
netCDF4 1.4.0 cp27 avx2
netCDF4 1.3.1 cp36 avx2
netCDF4 1.3.1 cp35 avx2
netCDF4 1.3.1 cp27 avx2
netCDF4 1.2.8 cp27 avx2
Or to list a specific version:
[name@server ~]$ avail_wheels --name "*cdf*" --version 1.3
name version build python arch
------- --------- ------- -------- ------
netCDF4 1.3.1 cp36 avx2
netCDF4 1.3.1 cp35 avx2
netCDF4 1.3.1 cp27 avx2
Or to list for a specific version of python:
[name@server ~]$ avail_wheels --name "*cdf*" --python 3.6
name version build python arch
------- --------- ------- -------- ------
netCDF4 1.3.1 cp36 avx2
The python column tell us for which python version the wheel is available, where cp36 stands for cpython 3.6.
A few other examples:
- List the wheels for specific architectures : avail_wheels --arch avx avx2
- List the wheels specifically for GPU and display only name, version, python columns: avail_wheels --column name version python --all_versions --name "*gpu"
- Display usage and help: avail_wheels --help
Anaconda
Please see Anaconda.
Jupyter
Please see Jupyter.