Installation¶
Installing pygnuastro
¶
Python packages can be distributed in mainly two ways, a built distribution
and a source distribution.
Built distributions are available in the form of
wheels. Wheels offer a faster
installation, smaller size and better maintainability. By default pip will always
choose a wheel file over sdist file, unless you are using a very recent version of
Python, if a new version of pygnuastro
has just been released, or if you are building
pygnuastro
for a platform that is not common. Note that in this case you will need a
C compiler (e.g., gcc
or clang
) and the external dependencies to be installed
(see Building from source below) for the installation to succeed.
Using pip (PyPI)¶
To install pygnuastro
with pip, run:
pip install pygnuastro
If you want to make sure none of your existing dependencies get upgraded, you can also do:
pip install pygnuastro --no-deps
If you get a PermissionError
this means that you do not have the required
administrative access to install new packages to your Python installation. In
this case you may consider using the --user
option to install the package
into your home directory. You can read more about how to do this in the pip
documentation.
Alternatively, if you wish to use pygnuastro
in a project, or wish to
isolate the pygnuastro
package for a different purposes, consider installing
it in a virtual environment instead.
Do not install pygnuastro
using sudo
unless you are fully aware of the risks.
Testing an Installed pygnuastro
¶
TBA after adding a test module. Currently pytest
can be used by running pytest
in the top of the
pyGnuastro source after having installed pyGnuastro
.
Building from Source¶
Warning
Source distribution installtions are not recommended since they require the user to have all the dependencies of pyGnuastro also installed.
The source distribution of pygnuastro
is available in the form of a tar
and
zip
files. The source distribution contains the projects source tree, which you can
find on GitHub. In order to install the package
Requirements¶
pygnuastro
has the following strict requirements:
Prerequisites¶
You will need a compiler suite and the development headers for Python in order
to build pygnuastro
. Since pyGnuastro is a wrapper over the Gnuastro Library
the other essential requirement is Gnuastro. It can be either built from source
or installed using a supported package manager
. To know more about how to build and install Gnuastro
go through the Installation chapter
in the Gnuastro Book
Prerequisites for Linux¶
On Linux, using the package manager for your distribution will usually be the
easiest route to making sure you have the prerequisites to build pygnuastro
. In
order to build from source, you will need the Python development
package for your Linux distribution, as well as pip.
For Debian/Ubuntu:
sudo apt-get install python3-dev python3-numpy-dev python3-setuptools
For Fedora/RHEL:
sudo yum install python3-devel python3-numpy python3-setuptools
Prerequisites for Mac OS X¶
On MacOS X you will need the XCode command line tools which can be installed using:
xcode-select --install
Follow the onscreen instructions to install the command line tools required. Note that you do not need to install the full XCode distribution (assuming you are using MacOS X 10.9 or later).
The instructions for building NumPy from source are a good resource for setting up your environment to build Python packages.
Obtaining the Source Packages¶
Source Packages¶
The latest stable source package for pygnuastro
can be downloaded here.
Development Repository¶
The latest development version of pygnuastro
can be cloned from GitHub
using this command:
git clone https://github.com/Jash-Shah/pyGnuastro.git
Building and Installing¶
To build and install pygnuastro
(from the root of the source tree) assuming
you have all the Prerequisites installed:
python3 setup.py build -I/path/to/gnuastro-installed-headers -L/path/to/gnuastro-installed-lib
python3 setup.py install
Note
Since pygnuastro
depends on Gnuastro
, while building the python
package, we need to provide the include path(-I
) and the library path(-L
) (See
Directory Options)
to link to the Gnuastro Library and its installed headers. The
include path should be the path of the dirctory where the Gnuastro Library headers
are installed(usually /usr/local/include
). The library path(usually
/usr/local/lib
) is the path to the directory where the Gnuastro Library
(libgnuastro.so
) is located. See the Installation Directory
chapter in the Gnuastro Book for more information on how and where to install
Gnuastro.
If Gnuatro was configured with no --prefix
option or with it set to /usr/local/include
then no flags need to be passed to the python3 setup.py build
command.
Troubleshooting¶
If you get an error mentioning that you do not have the correct permissions to
install pygnuastro
into the default site-packages
directory, you can try
installing with:
python3 setup.py install --user
which will install into a default directory in your home directory.
For Developers¶
The pygnuastro
wheels ship with the external dependencies(Gnuastro library).
This is done, so that users don’t need to install and setup Gnuastro
and can just
run pip install pygnuastro
.
However, this means deveopers who would like to tinker with the pygnuastro
code are
tied with the version of Gnuastro
in the wheel file. This can lead to scenarios
where a deveoper might want to, say add a python wrapper for a Gnuastro Library fucntion.
However, the version of the Gnuastro Library shipped in the wheel file does not have that
fucntion yet.
The best way to overcome this for developers, is to use the Building from Source.