Home > Software engineering >  Problems installing python packages on Mac M1
Problems installing python packages on Mac M1

Time:11-26

I want to install python packages listed in the requirements file of my github repo. However, I have problems installing those python packages into my conda environment.

First of all, I installed conda with Miniforge3-MacOSX-arm64 which supports the M1 with arm64 architecture. However, some specific python packages like onnxruntime I wasn't able to install, because I encountered error messages like that:

ERROR: Could not find a version that satisfies the requirement onnxruntime
ERROR: No matching distribution found for onnxruntime 

I assumed that for those specific python packages there is no support yet for the M1.

Therefore, I pursued another approach. I set the settings of Terminal to "Open with Rosetta". The plan is to install the applications of the intel x86_64 architecture and let Rossetta create the binaries to let run on arm64. Then I uninstalled miniforge for arm64 and installed miniforge for x86_64 named Miniforge3-MacOSX-x86_64. With that setup I was able to install all listed python packages of the requirement file and with pip freeze I can also confirm that they have been installed. However, I am somehow not able to use those python packages. For instance if I want to run pytest I get the following error:

zsh: illegal hardware instruction pytest

I assumed Rossetta takes care of that, that I can use applications for x86_64 also on arm64. But somehow it doesn't work. I tried a lot of different things and am out of ideas.

Does anyone know what the problem is? I would be also thankful for advice and suggestions how to properly set up a python environment on Mac M1.

CodePudding user response:

I had the same problem back in 2days ago, I'm using m1 pro. I was trying to install the python packages only using pip but I got a numbers of errors, then I decided to install with conda.

In my case it worked, here is what I've done so far is:

First Enable the open with rosetta in your zsh. And then,

# create environment in conda
conda create -n venv python=3.8 # with your python version

# activate
conda activate venv

and visit the conda website to look for the packages: enter image description here

You need to enable that specific channel to get that package with this command:

# config channel
conda config --append channels conda-forge # available channel name

# then install
conda install --yes --file requirements.txt

Make sure, your have the same version of pytest in your requirements.txt file. (eg:pytest==6.2.5)

Hope this should work, if not try to install it with pip like: pip install -r requirements.txt after environment enable.

  • Related