Skip to content
Aeronautical engineering calculations in Python.
Python Shell
Branch: master
Clone or download
Latest commit 26a579a Apr 3, 2019



Maintenance License Docs Email

Description:Aeronautical engineering calculations in Python
Author:AeroPython Team <>


scikit-aero is a Python package for various aeronautical engineering calculations. It is based on several existing Python packages on the field, but intends to provide pythonic syntax, use of SI units and full NumPy arrays support among other things. scikit-aero is licensed under the BSD license.

It was started by Juan Luis Cano in 2012 and has code from several contributors (see AUTHORS). The source code and issue tracker are both hosted on GitHub

Notice: This package is under heavy development and the API might change at any time until a 1.0 version is reached. It is stable but not feaure complete yet, and it might contain bugs.


  • Pythonic interface.
  • Use of SI units.
  • Full support of NumPy arrays.
  • Support for both Python 2 and 3.
  • Fully tested and documented.
  • Standard atmosphere properties up to 86 kilometers.
  • Gas dynamics calculations.


  • Airspeed conversions.
  • Coordinate systems.
  • Most of the PDAS.


Atmosphere properties:

from skaero.atmosphere import coesa
h, T, p, rho = coesa.table(1000)  # Altitude by default, 1 km

Inverse computations allowed with density and pressure, which are monotonic:

h, T, p, rho = coesa.table(p=101325)  # Pressure of 1 atm

Gas dynamics calculations:

from skaero.gasdynamics import isentropic, shocks
fl = isentropic.IsentropicFlow(gamma=1.4)
p = 101325 * fl.p_p0(M=0.8)  # Static pressure given total pressure of 1 atm
ns = shocks.Shock(M_1=2.5, gamma=1.4)
M_2 = ns.M_2  # Mach number behind a normal shock wave
os = shocks.Shock(M_1=3.0, theta=np.radians(25), weak=True)


This package depends on Python, NumPy and SciPy and is usually tested on Linux with the following versions:

  • Python 2.7, NumPy 1.6, SciPy 0.11
  • Python 3.3, NumPy 1.7.0b2, SciPy 0.11.0

but there is no reason it shouldn't work on Windows or Mac OS X and other Python versions newer or equal to 2.5. If you are willing to provide testing on this platforms, please contact me and if you find any bugs file them on the issue tracker.


For running the tests, py.test is recommended (see Testing). The examples are in IPython notebook format, so to run them locally you will need a recent version of IPython and its dependencies.


To install just execute:

$ pip install scikit-aero

If you want to install the package in development mode, please execute:

$ pip install --editable /path_to_scikit-aero

It is recommended that you never ever use sudo with distutils, pip, setuptools and friends in Linux because you might seriously break your system [1][2][3][4]. I recommend using virtualenv, per user directories or local installations.


scikit-aero recommends py.test for running the test suite. Running from the top directory:

$ pytest

To test code coverage, make sure you install py.test-cov extension and run:

$ pytest --cov skaero/


Some applied examples are in the folder examples in the IPython notebook format. To see them without running locally, use nbviewer; for example, to see the cd_nozzle.ipynb notebook, browse to

Bug reporting

I am pretty sure I never introduce bugs in my code, but if you want to prove me wrong please refer to the issue tracker on GitHub.


If you use scikit-aero on your project, please drop me a line.


scikit-aero is released under a 2-clause BSD license, hence allowing commercial use of the library. Please refer to the COPYING file.

See also

You can’t perform that action at this time.