web analytics
AllOSGeoPython

Anaconda install with OSGeo4W | GIS for Thought

I was coming across some errors when installing Anaconda, Miniconda specifically.

https://conda.io/miniconda.html

I think part of the reason is I have quite a few installs of Python due to OSGeo4W.

My error:

Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00002554 (most recent call first):

The solution:

Update the activate.bat file that is called when launching from the start menu. For me located in:

C:ProgramDataAnacondaScripts

We need to add in the following to clear out and reset the python environment before launching anaconda:

@SET PYTHONPATH=
@SET PYTHONHOME=C:ProgramDataAnaconda
@PATH C:ProgramDataAnaconda;C:ProgramDataAnacondaScripts;%PATH%

So, editing the file from:

@REM Test first character and last character of %1 to see if first character is a "
@REM   but the last character isn't.
@REM This was a bug as described in https://github.com/ContinuumIO/menuinst/issues/60
@REM When Anaconda Prompt has the form
@REM   %windir%system32cmd.exe "/K" "C:UsersbuilderMiniconda3Scriptsactivate.bat" "C:UsersbuilderMiniconda3"
@REM Rather than the correct
@REM    %windir%system32cmd.exe /K ""C:UsersbuilderMiniconda3Scriptsactivate.bat" "C:UsersbuilderMiniconda3""
@REM this solution taken from https://stackoverflow.com/a/31359867
@set "_args1=%1"
@set _args1_first=%_args1:~0,1%
@set _args1_last=%_args1:~-1%
@set _args1_first=%_args1_first:"=+%
@set _args1_last=%_args1_last:"=+%
@set _args1=


@if "%_args1_first%"=="+" if NOT "%_args1_last%"=="+" (
    @CALL "%~dp0..Librarybinconda.bat" activate
    @GOTO :End
)

@CALL "%~dp0..Librarybinconda.bat" activate %*

:End
@set _args1_first=
@set _args1_last=

To:

@REM Test first character and last character of %1 to see if first character is a "
@REM   but the last character isn't.
@REM This was a bug as described in https://github.com/ContinuumIO/menuinst/issues/60
@REM When Anaconda Prompt has the form
@REM   %windir%system32cmd.exe "/K" "C:UsersbuilderMiniconda3Scriptsactivate.bat" "C:UsersbuilderMiniconda3"
@REM Rather than the correct
@REM    %windir%system32cmd.exe /K ""C:UsersbuilderMiniconda3Scriptsactivate.bat" "C:UsersbuilderMiniconda3""
@REM this solution taken from https://stackoverflow.com/a/31359867
@set "_args1=%1"
@set _args1_first=%_args1:~0,1%
@set _args1_last=%_args1:~-1%
@set _args1_first=%_args1_first:"=+%
@set _args1_last=%_args1_last:"=+%
@set _args1=

@SET PYTHONPATH=
@SET PYTHONHOME=C:ProgramDataAnaconda
@PATH C:ProgramDataAnaconda;C:ProgramDataAnacondaScripts;%PATH%

@if "%_args1_first%"=="+" if NOT "%_args1_last%"=="+" (
    @CALL "%~dp0..Librarybinconda.bat" activate
    @GOTO :End
)

@CALL "%~dp0..Librarybinconda.bat" activate %*

:End
@set _args1_first=
@set _args1_last=

Updating the paths as required.

This just clears out the python and windows environmental variables before launching, similar to what OSGeo4W does.

Tags
Show More

Related Articles

Back to top button
Close