Error: "pip install nnabla" on M1(M2)mac
tsukamoto1783 opened this issue · 4 comments
Thanks for creating and managing such a nice package.
I am using M2 mac.
The following commands, which are first instructed in official documents, etc., will result in an execution error.
pip install nnabla
ERROR: Could not find a version that satisfies the requirement nnabla (from versions: none)
ERROR: No matching distribution found for nnabla
The documentation says that "mac" is also supported, but I wonder if "intel" and "apple silicon" are both supported.
Also, I would be very happy if you could provide some possible solutions for the "apple silicon" if it is supported.
The execution environment is described below.
If you need more information, please let us know.
We sincerely look forward to your response.
【PC environment】
Chip:Apple M2
macOS:13.3.1
【tried】
I tried using "pyenv" and multiple python versions, but all gave the same execution error.
pip --version
pip 23.1.2 from /Users/username/.pyenv/versions/3.9.1/lib/python3.9/site-packages/pip (python 3.9)
pip --version
pip 23.1.2 from /Users/username/.pyenv/versions/3.9.10/lib/python3.9/site-packages/pip (python 3.9)
pip --version
pip 23.1.2 from /Users/username/.pyenv/versions/3.10.3/lib/python3.10/site-packages/pip (python 3.10)
【addition】
I tried "pip install nnabla" under "intel mac". on my own intel Mac, it installed without any problem.
pip --version
pip 23.1.2 from /username/Versions/3.9/liv/python3.9/site-packages/pip (python 3.9)
having the same problem. to give an explanation, it looks like there are linux ARM-specific (aarch64) builds, but no macOS ARM-specific builds: https://pypi.org/project/nnabla/#files
here's how I built nnabla
from source for M2 Mac:
- install pre-requisites
# ensure homebrew is installed
echo ""
echo "making sure homebrew is installed..."
which brew || /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# ensure clang is installed
echo ""
echo "making sure clang is installed..."
which clang || brew install llvm
# install cmake CLI (add binary and include paths for cmake to ~/.bash_profile)
echo ""
echo "installing cmake..."
DIRPATH_LOCAL_BIN="${HOME}/.local/bin"
DIRPATH_LOCAL_INCLUDE="${HOME}/.local/include"
echo "" >> ~/.bash_profile
echo "# cmake binary and include paths" >> ~/.bash_profile
echo "export C_INCLUDE_PATH=\"${DIRPATH_LOCAL_INCLUDE}\"" >> ~/.bash_profile
echo "export CPLUS_INCLUDE_PATH=\"${DIRPATH_LOCAL_INCLUDE}\"" >> ~/.bash_profile
echo "" >> ~/.bash_profile
echo "export PATH=\"${PATH}:${DIRPATH_LOCAL_BIN}\"" >> ~/.bash_profile
source ~/.bash_profile
brew install cmake
# download and copy protoc
echo ""
echo "installing protoc..."
URL_PROTOC="https://github.com/protocolbuffers/protobuf/releases/download/v23.0-rc3/protoc-23.0-rc-3-osx-aarch_64.zip"
cd "${HOME}/Downloads"
mkdir -p ./protoc/
curl -L "$URL_PROTOC" -o "$(basename $URL_PROTOC)" && unzip "$(basename $URL_PROTOC)" -d ./protoc/
cp protoc/bin/protoc "${DIRPATH_LOCAL_BIN}"
cp -R protoc/include/google "${DIRPATH_LOCAL_INCLUDE}"
rm -rf protoc/ "$(basename $URL_PROTOC)"
which protoc || echo "ERROR: failed to install protoc!"
- build nnabla and replace any installation with self-built python wheel
see here: https://github.com/sony/nnabla/blob/master/doc/build/build.md#build-and-installation
@YukioOobuchi I'm not sure how nnabla
assets are getting uploaded to pypi, but I'd love to contribute python wheels for 3.8, 3.9, and 3.10 on macOS 13 (Ventura):
might have to swap builder.py
from latest protobuf: https://stackoverflow.com/a/72494013
to fix this error upon import nnabla
in python:
mes-MacBook-Pro:nnabla me$ python
Python 3.10.11 (main, May 7 2023, 19:48:21) [Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import nnabla
2023-05-07 20:10:54,252 [nnabla][INFO]: Initializing CPU extension...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/me/.pyenv/versions/3.10.11/lib/python3.10/site-packages/nnabla/__init__.py", line 34, in <module>
from .parameter import (
File "/Users/me/.pyenv/versions/3.10.11/lib/python3.10/site-packages/nnabla/parameter.py", line 29, in <module>
import nnabla.utils.nnabla_pb2 as nnabla_pb2
File "/Users/me/.pyenv/versions/3.10.11/lib/python3.10/site-packages/nnabla/utils/nnabla_pb2.py", line 8, in <module>
from google.protobuf.internal import builder as _builder
ImportError: cannot import name 'builder' from 'google.protobuf.internal' (/Users/me/.pyenv/versions/3.10.11/lib/python3.10/site-packages/google/protobuf/internal/__init__.py)