pythonpandaspy2appcmathpython-standalone

Py2App error: ModuleNotFoundError: No module named 'cmath' when using Pandas


I am trying to build a standalone app that utilises Pandas. This is my setup.py file:

from setuptools import setup

APP = ['MyApp.py']
DATA_FILES = ['full path to/chromedriver']
PKGS = ['pandas','matplotlib','selenium','xlrd']
OPTIONS = {'packages': PKGS, 'iconfile': 'MyApp_icon.icns'}


setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app','pandas','matplotlib','selenium','xlrd'],
)

The making of the *.app file goes smoothly, but when I try to run it, it gives me the following error:

...
import pandas._libs.testing as _testing
      File "pandas/_libs/testing.pyx", line 1, in init pandas._libs.testing
    ModuleNotFoundError: No module named 'cmath'

I tried to include ‘cmath’ in my list of PKGS and in setup_requires in the setup.py file, but when I tried to build the app using py2app it gave me the error:

distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('cmath')

I am stuck. I couldn't find anything useful online. cmath should be automatically included from what I have been reading. Any ideas on where is the problem and how can I fix it?


Solution

  • I think I have found a solution: downgrade to Python version 3.6.6. See: python 3.6 module 'cmath' is not found

    To uninstall Python I followed this process: https://www.macupdate.com/app/mac/5880/python/uninstall Then I installed Python 3.6.6: https://www.python.org/downloads/release/python-366/

    With Python 3.6.6, Py2App seem to work no problem and includes Pandas smoothly.

    It seems that for some reasons cmath is not included in the latest versions of Python? I might be wrong. Please let me know what you think and if you have any questions.

    P.S.: I am using MacOS (Mojave 10.14.6) and PyCharm.