I have been trying to streamline my build process for NuPIC Core and NuPIC, and to eliminate the need for elevated permissions where possible. Being a newbie to both Python and NuPIC, I figured I should get some input from more experience folks.
My process so far is:
pip install --user --upgrade setuptools wheel
pip install --user pycapnp==0.6.3
git clone -b 1.0.6 https://github.com/numenta/nupic.core.git
cd nupic.core
NUPIC_CORE="$(pwd)"
pip install --user -r bindings/py/requirements.txt
mkdir -p $NUPIC_CORE/build/scripts
cd $NUPIC_CORE/build/scripts
cmake $NUPIC_CORE -DCMAKE_BUILD_TYPE=Release -DPY_EXTENSIONS_DIR=$NUPIC_CORE/bindings/py/src/nupic/bindings
make -j4
sudo make install
cd $NUPIC_CORE
sudo python setup.py develop
sudo -H pip install nupic==1.0.5
I’m hoping to use the “–user” flag instead of sudo on the pip install nupic step. This will require installing the bindings without sudo. However without sudo, that step results in the following error:
Setup SWIG Python module
running develop
error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
[Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/test-easy-install-29777.write-test'
The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
/usr/local/lib/python2.7/dist-packages/
Perhaps your account does not have write access to this directory? If the
installation directory is a system-owned directory, you may need to sign in
as the administrator or "root" account. If you do not have administrative
access to this machine, you may wish to choose a different installation
directory, preferably one that is listed in your PYTHONPATH environment
variable.
For information on other options, you may wish to consult the
documentation at:
https://setuptools.readthedocs.io/en/latest/easy_install.html
Please make the appropriate changes for your system and try again.
This gives me a lot of suggestions, but not sure which is the correct route to take in this case. Figured I would see if anyone with more experience might be able to direct me on how this is properly done.