Skip to content

Instantly share code, notes, and snippets.

@natevw
Last active July 13, 2024 12:35
Show Gist options
  • Save natevw/3e6fc929aff358b38c0a to your computer and use it in GitHub Desktop.
Save natevw/3e6fc929aff358b38c0a to your computer and use it in GitHub Desktop.
how I got FlatCAM 8.1 working on OS X [a long time ago — see comment thread for lots of good tips from others!]
brew update
brew install pyqt geos spatialindex
easy_install pip
pip install virtualenv
cd Development/Others\'/
mkdir FlatCAM
cd FlatCAM
virtualenv env
source env/bin/activate
pip install numpy matplotlib rtree scipy shapely simplejson
# copy contents of FlatCAM_8.1.zip into FlatCAM folder
python FlatCAM.py
@MiroHibler
Copy link

@tomoyanonymous, thank you again! :) I did try with py2app already but it didn't work and I was too busy to investigate and fix it...

Well, I stand corrected:

py2applet --iconfile=~/Downloads/flatcam_icon256.icns --make-setup FlatCAM.py
python3 setup.py py2app -A

worked now (from the FlatCAM_beta_8.994_sources), but the app is incredible slow compared to the one started from the command prompt...

@juansebastianUTech
Copy link

hey guys, I am following @tomoyanonymous guide for installing flatcam beta on brew and I am getting this

Collecting vispy==0.7
  Downloading vispy-0.7.0.tar.gz (13.4 MB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
ERROR: Could not find a version that satisfies the requirement ortools>=7.0 (from versions: none)
ERROR: No matching distribution found for ortools>=7.0

I am on a Mac M1 with monterey, any thoughts on what can be done about this / has anyone has have a similar issue?

@Gobol
Copy link

Gobol commented Feb 6, 2022

Ortools is a library maintained by Google, though open-sourced. Problem is - there is no build for Mac M1 arch. Me guessing You would have big troubles building it from source yourself. Best thing to do: give up native approach - use VM/linux.

@juansebastianUTech
Copy link

fair enough, thanks!

@berkakinci
Copy link

berkakinci commented Feb 7, 2022

Another option may be installing the x86_64 version of the package and let Rosetta2 do the translating. Something like:
arch --x86_64 brew install or-tools
I expect this will require and install a whole bunch of x86_64 requirements/libraries too.
[Caution: I haven't tried this myself.]
Also, I find it suspicious that I didn't find ortools but I found or-tools. May be that's the root issue.

@juansebastianUTech
Copy link

@berkakinci actually you are correct, I didnt find ortools but or-tools when I was doing some digging; do you guys know where do the package dependencies for flatcam are defined?, I would be more than happy to try modifying that.

in theory the x86_64 should work, but from my understanding homebrew is still working under Rossetta2, I am leaning towards the issue being the package naming

@berkakinci
Copy link

I did a little more digging earlier, but gave up.
Homebrew scripts from tomoyanonymous.
It's not a direct flatCAM dependency. It appears to be a vispy dependency based on your messages.
However, even vispy is not itself showing up in homebrew search. It may be coming in under something like Python pip or there is another name mapping -- I'm not familiar enough with homebrew internals.

@juansebastianUTech
Copy link

juansebastianUTech commented Feb 7, 2022

@berkakinci thanks for checking that out. mmm it could very well be that its part of pip :/. however I tried installing it under x86_64

arch --x86_64 brew install flatcam-beta
and got:

Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
To rerun under ARM use:
    arch -arm64 brew install ...
To install under x86_64, install Homebrew into /usr/local.

which makes sense since homebrew on M1 macs gets installed under /opt from my understanding
I will be looking into the pip dependency

@berkakinci
Copy link

Oh @juansebastianUTech FWIW, I was able to brew install flatcam-beta earlier today without problem; MacOS 11.6.3 on x86_64.
vispy doesn't show up in my brew list but it is listed under all 4 versions of pip I know about (sigh).

@berkakinci
Copy link

which makes sense since homebrew on M1 macs gets installed under /opt from my understanding

That's actually promising. Again, I'm not speaking from any experience here...
That may mean one of two thing:

  • You can install a whole x86_64 flatcam-beta version and all of its x86_64 dependencies; independent of any other homebrew stuff you have M1 native.
  • There is some trick in homebrew to have them cross over between the two architectures. I say that because homebrew already has a habit of installing stuff in location A and linking to them from a location B in your path. I imagine any dynamically-linked libraries that aren't universal will absolutely require two arch versions installed -- somehow...
    Good luck; and let me know if you resolve it. I'd like to be prepared for the arm64 move.

@juansebastianUTech
Copy link

ahh good point, I will report back if I can make it work!

@roamerP
Copy link

roamerP commented Feb 9, 2022

Hi, when running python3 FlatCAM.py I get ModuleNotFoundError: No module named 'ezdxf.math.vector'. How do I fix it?

I am on a MacBook Pro M1 with MacOS Monterey.
Regards RonnyP

@Day0Dreamer
Copy link

Well, I got it to run on macOS Monterey v12.1 Beta (21C5021h)!

After countless hours of trying to get it to work, I caved in and used Homebrew to install it, which almost worked - I only got the AttributeError: module 'vispy.visuals.markers' has no attribute '_marker_dict' error... ;)

Then I decided to give another try with @mjparme's instructions, with one addition - in requirements.txt file I didn't remove gdal (it didn't throw an error anymore, but it may also be due to Homebrew install) AND I set vispy==0.6.6 (v0.9.3 was installed). Than I ran pip3 install -r requirements.txt again, then python3 FlatCAM.py and... voilà! 🎆

Needless to say that Homebrew version now works as well ;)

image

That's how I got to work the latest beta on Windows11 with WSL 2 (Ubuntu)

@FlyingSamson
Copy link

I wonder if it would be possible to create a FlatCAM conda package and then create a conda environment that could be shared so FlatCAM is just ready to go?

For any Conda users out there, below is the yaml file I used to get FlatCam Beta 8.994 running on an M2 Pro chip with osx-64 as well as osx-arm64 (plus point of the latter is the native support of the dark system theme). I basically took the contents of requirements.txt and installed all but or ortools and rasterio through conda and additionally enforced vispy<=0.9.0 which is the last version where the _marker_dict still existed.

Not sure if this is relevant, but I used micromamba to create the conda environment from this environment file.

For osx-arm64:

micromamba create -n FlatCAM -f <path to FlatCAM.yml>

For osx-64:

CONDA_SUBDIR=osx-64 micromamba create -n FlatCAM -f <path to FlatCAM.yml>

Then just activate that environment

micromamba activate FlatCAM

and run in the unzipped Beta 8.994 directory

python FlatCam.py

Maybe this could be used as starting point for a Conda recipe?

# Content of File FlatCAM.yml
name: FlatCAM
channels:
  - conda-forge
dependencies:
  - python=3.8
  - pyqt>=5.12.1
  - numpy>=1.16
  - matplotlib>=3.1
  - cycler>=0.10
  - python-dateutil>=2.1
  - kiwisolver>=1.1
  - six
  - setuptools
  - dill
  - rtree
  - pyopengl
  - vispy<=0.9.0          # starting with 0.9.1 _marker_dict is gone
  #- ortools-python>=7.0  # only available on linux, use pip for the moment
  - svg.path>=4.0
  - simplejson
  - shapely>=1.7.0
  - freetype-py
  - fontTools
  #- rasterio             # produces missing gdal library error use pip for now
  - lxml
  - ezdxf
  - qrcode>=6.1
  - reportlab>=3.5
  - svglib
  - gdal
  - pyserial>=3.4
  - pip:
    - ortools>=7.0
    - rasterio

@dhysuiej
Copy link

Does anyone know whether a version of FlatCAM compatible with macOS Catalina could be built directly on Github Actions?

I'm currently following the steps in this video, but it's taking me too long to install pyqt via homebrew.

@jimwildman
Copy link

jimwildman commented Jun 17, 2023 via email

@SurathepThonthan
Copy link

FlatCAM_beta_8.994_sources % python FlatCAM.py

Traceback (most recent call last):
File "/Users//FlatCAM/FlatCAM_beta_8.994_sources/FlatCAM.py", line 6, in
from app_Main import App
File "/Users//FlatCAM/FlatCAM_beta_8.994_sources/app_Main.py", line 47, in
from appCommon.Common import LoudDict
File "/Users//FlatCAM/FlatCAM_beta_8.994_sources/appCommon/Common.py", line 88, in
class LoudUniqueList(list, collections.MutableSequence):
^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'collections' has no attribute 'MutableSequence'

plc help me

@alexcode9
Copy link

if you are using python 3.10+ change import collection in appCommon/Common.py to

import collection.abc
collections.Iterable = collections.abc.Iterable
collections.Mapping = collections.abc.Mapping
collections.MutableSet = collections.abc.MutableSet
collections.MutableMapping = collections.abc.MutableMapping

@alexrohde42
Copy link

alexrohde42 commented Mar 15, 2024

if you are using python 3.10+ change import collection in appCommon/Common.py to

import collection.abc
collections.Iterable = collections.abc.Iterable
collections.Mapping = collections.abc.Mapping
collections.MutableSet = collections.abc.MutableSet
collections.MutableMapping = collections.abc.MutableMapping

After that I get the error ModuleNotFoundError: No module named 'ezdxf.math.vector'
Module ezdxf is installed

How can I fix it?

Thanks for an reply

@FlyingSamson
Copy link

After that I get the error ModuleNotFoundError: No module named 'ezdxf.math.vector'

This was fixed on the Beta branch in this commit
See also this issue

@FlyingSamson
Copy link

I'm currently in the process of getting FlatCAM build with MacPorts.

I finally got it all working, but it will still take some time until I got all newly created port files for flatcams dependencies into shape to get them into the upstream macports repo.

One thing I wanted to share here, though: The problem with

AttributeError: module 'vispy.visuals.markers' has no attribute '_marker_dict' error

is due to a "patch" in appGui/VisPyPatches.py, which has long been available in upstream VisPy. So lines 16-34 in this file can safely be removed and then flatcam also runs with newer (i.e., > 0.9.0) vispy versions.

@Isaprez
Copy link

Isaprez commented Jul 11, 2024

anyone know about this error ?

Traceback (most recent call last):
File "/Users/isai/Desktop/FlatCAM/FlatCAM.py", line 6, in
from app_Main import App
File "/Users/isai/Desktop/FlatCAM/app_Main.py", line 94, in
from appTools import *
File "/Users/isai/Desktop/FlatCAM/appTools/init.py", line 38, in
from appTools.ToolShell import FCShell
File "/Users/isai/Desktop/FlatCAM/appTools/ToolShell.py", line 19, in
import tclCommands
File "/Users/isai/Desktop/FlatCAM/tclCommands/init.py", line 75, in
module = loader.find_module(name).load_module(name)
^^^^^^^^^^^^^^^^^^
AttributeError: 'FileFinder' object has no attribute 'find_module'

@FlyingSamson
Copy link

I presume you are trying to run flatcam with python 3.12, because FileFinder.find_module, which has been deprecated since python 3.4 and removed in 3.12 (see https://docs.python.org/3.11/library/importlib.html#importlib.abc.PathEntryFinder.find_module).

So you can either switch to python < 3.12 or try to fix that line by using load_spec instead.

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