I recently switched to NEURON 7.7 from vs 7.2 and apparently a few things have changed over the past few years!
Also important to know, I run NEURON from Matlab (using a Java process and stdin/stdout/stderr) which leads to some of these issues.
When first running 7.7, I got an error: "Permission Denied" when trying to execute Python on startup (from calling nrniv).
Here's the full error:
Code: Select all
C:/nrn/bin/nrnpyenv.sh: line 144: /cygdrive/c/Users/RNEL/AppData/Local/Microsoft/WindowsApps/python3: Permission denied
I just recently "upgraded" to Windows 10 and apparently Windows Apps is a thing (see above path in the error msg). Navigating to that location I find an empty executable (size = 0 kb) which when I click on it launches a web browser to install Python. Interestingly, this doesn't fix the problem (in Matlab). However now when I now call python from a Windows terminal, python launches just fine. It apparently runs at:
as determined from import sys, sys.executable
So interestingly running python by calling WindowsApps/python3 works in the command line (i.e. literally typing 'python' in the command window), but not from NEURON. nrniv, when double clicked in Windows, also launches with this error (permission denied). I can still enter statements but I haven't tested it enough to know if it would also show the same problems with executing code (i.e. run() failing).
UPDATE: It turns out after I fixed the next problem, I was able to again use the -nopython flag and the code worked. However, I didn't see the next error until I had fixed the Python path problem.
So in the nrnpyenv.sh file, I modify the code setting the PYTHON variable equal to the crazy path above (in the part just below "$WHICH python3", line 83 for me)
This path doesn't work so I finally settled on hardcoding in:
Code: Select all
PYTHON="/cygdrive/c/Users/RNEL/Anaconda3/python.exe" a="/cygdrive/c/Users/RNEL/Anaconda3" export PATH="$a":"$PATH"
This error is a bit more cryptic. What path? After dumping all the commands to a hoc file, I ran the file by double clicking it and it ran fine. I then tried having Matlab run the hoc file via a system() command call, this didn't work either (as opposed to my approach which was to run NEURON via a Java process). After some searching I found out this is likely a problem with my PATH environment variable. Using WindowsPathEditor (https://rix0rrr.github.io/WindowsPathEditor/) I found one path that no longer existed and removed it. I also removed my own installation of mingw from the path and some other paths that I no longer needed. Note I can't remember if I needed to remove all these paths, or if just removing the missing path was sufficient. After all of this, everything was working just fine again, like in NEURON 7.2!
Anyway, I'm not sure if there are any tidbits in here which might indicate some small tweaks are needed for NEURON or if it helps anybody else but I figured I'd document it just in case.