The Python Distutils are used to build and install PyTables, so it is fairly simple to get the application up and running. If you want to install the package from sources go to the next section. But if you are running Windows and want to install precompiled binaries jump to section 2.2). In addition, packages are available for many different Linux distributions, for instance T2 Project, RockLinux, Debian, Fedora or Gentoo. There also packages for other Unices like FreeBSD or MacOSX
These instructions are for both Unix/Linux and Windows systems. If you are using Windows, it is assumed that you have a recent version of MS Visual C++ (>= 6.0) compiler installed. A GCC compiler is assumed for Unix, but other compilers should work as well.
Extensions in PyTables have been developed in Pyrex (see ) and C language. You can rebuild everything from scratch if you have Pyrex installed, but this is not necessary, as the Pyrex compiled source is included in the distribution.
To compile PyTables you will need a recent version of Python, the HDF5 (C flavor) library and the numarray (see ) package. Although you won't need Numerical Python (see ) in order to compile PyTables, it is supported; you only need a reasonably recent version of it (>= 21.x) if you plan on using its methods in your applications. PyTables has been successfully tested with Numeric 21.3, 22.0, 23.8 and 24.0. If you already have Numeric installed, the test driver module will detect it and will run the tests for Numeric automatically.
First, make sure that you have at least Python 2.3 or 2.4 (Python 2.2 is unsupported as of now), HDF5 1.6.4 and numarray 1.3 or higher installed (I'm using HDF5 1.6.4 and numarray 1.3.1 currently). If you don't, fetch and install them before proceeding.
Compile and install these packages (but see section 2.2.1 for instructions on how to install precompiled binaries if you are not willing to compile the prerequisites on Windows systems).
For compression (and possibly improved performance), you will need to install the Zlib (see ), which is also required by HDF5 as well. You may also optionally install the excellent LZO and UCL compression libraries (see and section 6.3). The high-performance bzip2 compression library can also be used with PyTables (see ).
setup.py will detect HDF5, LZO, UCL or bzip2 libraries and include files under /usr or /usr/local; this will cover most manual installations as well as installations from packages. If setup.py can not find libhdf5 or libz (or liblzo, libucl or libbz2 that you may wish to use) or if you have several versions of a library installed and want to use a particular one, then you can set the path to the resource in the environment, setting the values of the HDF5_DIR, LZO_DIR, UCL_DIR or BZIP2_DIR environment variables to the path to the particular resource. You may also specify the locations of the resource root directories on the setup.py command line. For example:
--hdf5=/stuff/hdf5-1.6.4 --lzo=/stuff/lzo-1.08 --ucl=/stuff/ucl-1.03 --bzip2=/stuff/bzip2-1.0.3
--lflags="-Xlinker -rpath -Xlinker /stuff/hdf5-1.6.4/lib"or perhaps just
--rpath="/stuff/hdf5-1.6.4/lib"Check your compiler and linker documentation as well as the Python Distutils documentation for the correct syntax.
LIBS="hdf5-1.6.5" LIBS="hdf5-1.6.5 nsl"
Once you have installed the prerequisites, setup.py needs to know where the necessary library stub (.lib) and header (.h) files are installed. Set the following environment variables:
set HDF5_DIR=c:\stuff\5-164-win set UCL_DIR=c:\stuff\ucl-1-02 set LZO_DIR=c:\stuff\lzo-1-08 set BZIP2_DIR=c:\stuff\bzip2-1-0-3Or, you can pass this information to setup.py by setting the appropriate arguments on the command line. For example:
--hdf5=c:\stuff\5-164-win --lzo=c:\stuff\lzo-1-08 --ucl=c:\stuff\ucl-1-02 --bzip2=c:\stuff\bzip2-1-0-3
Once you have installed the HDF5 library and numarray packages, you can proceed with the PyTables package itself:
python setup.py build_ext --inplaceDepending on the compiler flags used when compiling your Python executable, there may appear many warnings. Don't worry, almost all of them are caused by variables declared but never used. That's normal in Pyrex extensions.
To run the test suite, change into the test directory and execute this command:
PYTHONPATH=.. python test_all.py
set PYTHONPATH=.. python test_all.py
python test_types.py -vIf a test fails, please enable verbose output (the -v flag and verbose option), run the failing test module again, and, very important, get your PyTables version information by running the command:
python test_all.py --show-versionsand send back the output to developers so that we may continue improving PyTables.
If you run into problems because Python can not load the HDF5 library or other shared libraries:
python setup.py installOf course, you will need super-user privileges if you want to install PyTables on a system-protected area. You can select, though, a different place to install the package using the --prefix flag:
python setup.py install --prefix="/home/myuser/mystuff"Have in mind, however, that if you use the --prefix flag to install in a non-standard place, you should properly setup your PYTHONPATH environment variable, so that the Python interpreter would be able to find your new PyTables installation.
python setup.py install --helpfor more information on that subject.
That's it! Now you can skip to the next chapter to learn how to use PyTables.
This section is intended for installing precompiled binaries on Windows platforms. You may also find it useful for instructions on how to install binary prerequisites even if you want to compile PyTables itself on Windows.
First, make sure that you have Python 2.3, 2.4 or higher (Python 2.2 is unsupported as of now), HDF5 1.6.4 or higher and numarray 1.3 or higher installed (I have built the PyTables binaries using HDF5 1.6.4 and numarray 1.3.1).
For the HDF5 it should be enough to manually copy the hdf5dll.dll, zlib1.dll and szipdll.dll files to a directory in your PATH environment variable (for example C:\WINDOWS\SYSTEM32).
Caveat: When downloading the binary distribution for HDF5 libraries, select one compiled with MSVC 6.0 if you are using Python 2.3.x, such as the package 5-164-win.zip. The file 5-164-win-net.zip was compiled with the MSVC 7.1 (aka ".NET 2003") and you must choose if you want to run PyTables with Python 2.4.x series. You have been warned!
To enable compression with optional LZO, and bzip2
libraries (see the section 6.3 for hints about
how they may be used to improve performance), fetch and
install the LZO and bzip2
binaries from:
http://gnuwin32.sourceforge.net/. Normally,
you will only need to fetch and install the
<package>-<version>-bin.zip file and
copy the lzo.dll and bzip2.dll
files in a directory in the PATH environment
variable, so that they can be found by the PyTables extensions.
Note: If you are reading this because you have been redirected from the section 2.1 (Installation from source), some of the headers you will need are in the <package>-<version>-lib.zip file.
Download the
tables-<version>.win32-py<version>.exe
(tables-<version>-LB.win32-py<version>.exe
if you want support for LZO and bzip2 libraries) file and
execute it.
python test_<module>.py -v verboseand also:
python test_all.py --show-versionsand mail the output to the developers so that the problem can be fixed in future releases.