Python: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
(Added section on listing available wheels)
(Marked this version for translation)
Line 49: Line 49:
* only show you versions that are compatible with the CPU architecture that you are currently running on.
* only show you versions that are compatible with the CPU architecture that you are currently running on.


<!--T:24-->
To list wheels containing "cdf" (case insensitive) in its name:
To list wheels containing "cdf" (case insensitive) in its name:
{{Command|avail_wheels --name "*cdf*"
{{Command|avail_wheels --name "*cdf*"
Line 56: Line 57:
}}
}}


<!--T:25-->
Or to list all available versions:  
Or to list all available versions:  
{{Command|avail_wheels --name "*cdf*" --all_version
{{Command|avail_wheels --name "*cdf*" --all_version
Line 67: Line 69:
}}
}}


<!--T:26-->
Or to list a specific version:
Or to list a specific version:
{{Command|avail_wheels --name "*cdf*" --version 1.3
{{Command|avail_wheels --name "*cdf*" --version 1.3
Line 76: Line 79:
}}
}}


<!--T:27-->
Or to list for a specific version of python:
Or to list for a specific version of python:
{{Command|avail_wheels --name "*cdf*" --python 3.6
{{Command|avail_wheels --name "*cdf*" --python 3.6
Line 84: Line 88:
The ''python'' column tell us for which python version the wheel is available, where <tt>cp36</tt> stands for <tt>cpython 3.6</tt>.
The ''python'' column tell us for which python version the wheel is available, where <tt>cp36</tt> stands for <tt>cpython 3.6</tt>.


===== A few other examples: =====
===== A few other examples: ===== <!--T:28-->
* List the wheels for specific architectures : <tt>avail_wheels --arch avx avx2</tt>
* List the wheels for specific architectures : <tt>avail_wheels --arch avx avx2</tt>
* List the wheels specifically for GPU and display only ''name'', ''version'', ''python'' columns: <tt>avail_wheels --column name version python --all_versions --name "*gpu"</tt>
* List the wheels specifically for GPU and display only ''name'', ''version'', ''python'' columns: <tt>avail_wheels --column name version python --all_versions --name "*gpu"</tt>

Revision as of 15:26, 26 July 2018

Other languages:

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:

Question.png
[name@server ~]$ module avail python

You can then load the version of your choice using module load. For example, to load Python 2.7.14 you can use the command

Question.png
[name@server ~]$ module load python/2.7.14

In addition to the base Python module, the SciPy package is also available as a module, with the name scipy-stack/2017b. The SciPy module includes NumPy, Pandas, and several other popular Python modules; you can see the complete list and details at 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.

To create a virtual environment, enter the following command, where ENV is the name of the empty directory containing your environment:

Question.png
[name@server ~]$ virtualenv ENV

Once the virtual environment has been created, it must be activated:

Question.png
[name@server ~]$ source ENV/bin/activate

To exit the virtual environment, simply enter the command deactivate:

Question.png
[name@server ~]$ deactivate

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:

Question.png
[name@server ~]$ avail_wheels --name "*cdf*"
name     version    build    python    arch
-------  ---------  -------  --------  ------
netCDF4  1.4.0               cp27      avx2

Or to list all available versions:

Question.png
[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:

Question.png
[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:

Question.png
[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

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:

Question.png
[name@server ~]$ module load python/2.7.14

We then activate the virtual environment, previously created using the virtualenv command:

Question.png
[name@server ~]$ source ENV/bin/activate

Finally, we install the latest stable version of Numpy:

Question.png
[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:

Question.png
[name@server ~]$ pip install git+git://github.com/numpy/numpy.git

Anaconda

Please see Anaconda.

Jupyter

Please see Jupyter.