diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 81d0b861bad6a32bb6c665907892ac6ac8034061..bc25f8ca825d479bc8803377fb72769372cfda0e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,6 +4,7 @@
 stages:
   - prepare
   - build
+  - package
   - oskar-comparison
   - deploy
 
@@ -50,7 +51,7 @@ test-and-coverage:
     - gcovr -r .. -e '.*/external/.*' -e '.*/CompilerIdCXX/.*' -e '.*/test/.*' -e '.*/demo/.*' --xml > coverage.xml
     # Check whether pyeverybeam modules can be found from home directory after setting the PYTHONPATH
     - PYVERSION=`python3 --version | grep -P -o ".*\s\K\d\.\d(?=\.\d)"`
-    - export PYTHONPATH=${WORKDIR}/lib/python${PYVERSION}/site-packages
+    - export PYTHONPATH=${WORKDIR}/lib/python${PYVERSION}/dist-packages
     - cd && python3 -c "import everybeam"
   artifacts:
     reports:
@@ -79,6 +80,24 @@ build-doc:
     paths:
     - build/doc/html
 
+# Deploy package should be ran when
+#   when: manual
+#   only:
+#     - master
+build-package:
+  stage: package
+  needs: ["build-everybeam"]
+  image: everybeam:${CI_COMMIT_SHORT_SHA}
+  script:
+    - mkdir everybeam_package
+    - export SRC=$(pwd)
+    - cd /opt/everybeam/build
+    - make package
+    - mv $(ls -p | grep *\.deb) $SRC/everybeam_package
+  artifacts:
+    paths:
+    - everybeam_package/
+
 build-compare-oskar:
   stage: oskar-comparison
   image: everybeam:${CI_COMMIT_SHORT_SHA}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 227349d50848536a705f4d1df781627aa34af0b2..3cc8ba32ad37109aa93468cfa2de5334991f2fba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,6 +20,7 @@ endif()
 project(EveryBeam VERSION ${EVERYBEAM_VERSION})
 
 option (BUILD_WITH_PYTHON "Build python bindings" OFF)
+option (BUILD_APT_PACKAGES "Build apt package" OFF)
 
 string(TOLOWER ${CMAKE_PROJECT_NAME} projectname )
 
@@ -167,3 +168,11 @@ add_custom_target(doc
 elseif(DOXYGEN_FOUND)
 
 endif(DOXYGEN_FOUND)
+#------------------------------------------------------------------------------
+
+#------------------------------------------------------------------------------
+# Allow packaging with "make package"
+if(BUILD_APT_PACKAGES)
+  add_subdirectory(package)
+endif()
+#------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/docker/Dockerfile-everybeam b/docker/Dockerfile-everybeam
index d763a60b7669bb4c5ddbec3b28adb8155285b867..70c62e64c0e2d5aa86e5130b580c4c9982c262dc 100644
--- a/docker/Dockerfile-everybeam
+++ b/docker/Dockerfile-everybeam
@@ -8,5 +8,5 @@ ENV EVERYBEAMDIR /opt/everybeam
 ADD . ${EVERYBEAMDIR}/EveryBeam
 
 RUN mkdir -p ${EVERYBEAMDIR}/build && cd ${EVERYBEAMDIR}/build \
-    && cmake -DBUILD_WITH_PYTHON=ON -DCMAKE_INSTALL_PREFIX=.. ../EveryBeam \
+    && cmake -DBUILD_WITH_PYTHON=ON -DBUILD_APT_PACKAGES=ON -DCMAKE_INSTALL_PREFIX=.. ../EveryBeam \
     && make -j8 && make install -j8
diff --git a/package/CMakeLists.txt b/package/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8d956fdc21c7c0b37495b09558ad59a931bc3803
--- /dev/null
+++ b/package/CMakeLists.txt
@@ -0,0 +1,17 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+set(CPACK_PACKAGE_NAME "EveryBeam")
+set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
+set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
+set(CPACK_GENERATOR "DEB")
+set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Astron")
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
+set(CPACK_PACKAGE_VERSION_MAJOR "${EVERYBEAM_VERSION_MAJOR}")
+set(CPACK_PACKAGE_VERSION_MINOR "${EVERYBEAM_VERSION_MINOR}")
+set(CPACK_PACKAGE_VERSION_PATCH "${EVERYBEAM_VERSION_PATCH}")
+set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
+set(CPACK_DEBIAN_PACKAGE_DEPENDS "casacore-dev, libcfitsio-dev, wcslib-dev, libhdf5-serial-dev, libfftw3-dev, libpython3-dev")
+
+include(CPack)
\ No newline at end of file
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index b1cd9d43536be89b07343104c593198d342cef8b..38c9a4bc29d0d2e87d6e6289bdd7771e9fcd4bb6 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -30,7 +30,13 @@ add_subdirectory(lobes)
 
 # If the PYTHON_LIBRARY_DIR is not specified, install in lib dir
 if(NOT DEFINED ${PYTHON_LIBRARY_DIR}) 
-   set(PYTHON_LIBRARY_DIR ${CMAKE_INSTALL_PREFIX}/lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages)
+    execute_process (COMMAND ${PYTHON_EXECUTABLE} -c "import site; print(site.getsitepackages()[0])" OUTPUT_VARIABLE PYTHON_DIST_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+    if(PYTHON_DIST_PATH MATCHES "\\/(python${PYTHON_VERSION_MAJOR}\\.${PYTHON_VERSION_MINOR}\\/.*)")
+        set(PYTHON_LIBRARY_DIR ${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_MATCH_1})
+    else()
+        message(FATAL_ERROR "Failed to parse PYTHON_DIST_PATH='${PYTHON_DIST_PATH}'")
+    endif()
 endif()
 
 # Install pyeverybeam in site-packages directory