Skip to content

Instantly share code, notes, and snippets.

@eugeniobonifacio
Last active May 28, 2026 10:10
Show Gist options
  • Select an option

  • Save eugeniobonifacio/a651d2ca9bb4017226a1315bd6a095f1 to your computer and use it in GitHub Desktop.

Select an option

Save eugeniobonifacio/a651d2ca9bb4017226a1315bd6a095f1 to your computer and use it in GitHub Desktop.
Install and run FlatCAM on modern linux distros
#!/bin/bash
# clone flatcam beta
git clone -b Beta https://bitbucket.org/jpcgt/flatcam.git flatcam-beta
# grab the python 3.8 AppImage
wget https://github.com/niess/python-appimage/releases/download/python3.8/python3.8.19-cp38-cp38-manylinux1_x86_64.AppImage
# make it executable
chmod +x python3.8.19-cp38-cp38-manylinux1_x86_64.AppImage
# create a short name utility link to the AppImage
ln -s python3.8.19-cp38-cp38-manylinux1_x86_64.AppImage py38
# create a virtual environment
./py38 -m venv .venv
# activate the environment
source .venv/bin/activate
# build GDAL manually, as probably the system has a newer version
wget https://github.com/OSGeo/gdal/releases/download/v3.3.3/gdal-3.3.3.tar.gz
tar -xvzf gdal-3.3.3.tar.gz
pushd gdal-3.3.3
./configure --with-python=$(which python) --prefix=$VIRTUAL_ENV
make -j$(nproc)
pushd swig/python/
python setup.py install
popd
popd
# override the requirements to working ones
cat << 'EOT' > requirements.txt
pyqt5>=5.15
numpy~=1.16
matplotlib==3.1.3
cycler~=0.10
python-dateutil~=2.1
kiwisolver~=1.1
six~=1.0
setuptools
dill~=0.3
rtree~=1.3
pyopengl~=3.0
vispy==0.7.0
ortools~=7.0
svg.path~=4.0
simplejson~=3.19
shapely~=1.7.0
freetype-py~=2.5
fontTools~=4.55
rasterio~=1.3
lxml~=5.3
ezdxf~=1.1
qrcode~=6.1
reportlab~=3.5
svglib~=1.5
#gdal~=3.3 #installed manually
pyserial~=3.4
protobuf~=3.20
EOT
# install them
pip install -r requirements.txt
# now you can launch FlatCAM
# .venv/bin/python flatcam-beta/FlatCAM.py
@antoniocastroc

Copy link
Copy Markdown

EugenioBonifacio, many thanks for sharing this, it has been of great help. Ihakov2, many thanks for your suggestions, I have the same problem like you and fixed as suggested.

Thanks again to both, now it works great.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment