Skip to content
\n\n
\n

export PYTHONPATH=\"/opt/miniconda3/envs/py310/lib/python310.zip;/opt/miniconda3/envs/py310/lib/python3.10;/opt/miniconda3/envs/py310/lib/python3.10/lib-dynload;/opt/miniconda3/envs/py310/lib/python3.10/site-packages;~/.local/lib/python3.10/site-packages\"

\n
\n\n
/opt/miniconda3/envs/py310/lib/python310.zip;/opt/miniconda3/envs/py310/lib/python3.10;/opt/miniconda3/envs/py310/lib/python3.10/lib-dynload;/opt/miniconda3/envs/py310/lib/python3.10/site-packages;~/.local/lib/python3.10/site-packages\nPython path configuration:\n  PYTHONHOME = '/opt/miniconda3/envs/py310/bin/python'\n  PYTHONPATH = '/opt/miniconda3/envs/py310/lib/python310.zip;/opt/miniconda3/envs/py310/lib/python3.10;/opt/miniconda3/envs/py310/lib/python3.10/lib-dynload;/opt/miniconda3/envs/py310/lib/python3.10/site-packages;~/.local/lib/python3.10/site-packages'\n  program name = 'python3'\n  isolated = 0\n  environment = 1\n  user site = 1\n  import site = 1\n  sys._base_executable = '/opt/miniconda3/envs/py310/bin/python3'\n  sys.base_prefix = ''\n  sys.base_exec_prefix = ''\n  sys.platlibdir = 'lib'\n  sys.executable = '/opt/miniconda3/envs/py310/bin/python3'\n  sys.prefix = ''\n  sys.exec_prefix = ''\n  sys.path = [\n    '/opt/miniconda3/envs/py310/lib/python310.zip;/opt/miniconda3/envs/py310/lib/python3.10;/opt/miniconda3/envs/py310/lib/python3.10/lib-dynload;/opt/miniconda3/envs/py310/lib/python3.10/site-packages;~/.local/lib/python3.10/site-packages',\n  ]\nFatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding\nPython runtime state: core initialized\nModuleNotFoundError: No module named 'encodings'\n\nCurrent thread 0x00007fe65d843740 (most recent call first):\n  <no Python frame>\n
\n
            string winPath = @\"D:\\tools\\python310\";\n            string linuxPath = \"/opt/miniconda3/envs/py310\";\n            \n            \n            if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows))\n            {\n                string pathToVirtualEnv = winPath;\n                Runtime.PythonDLL = Path.Combine(pathToVirtualEnv, \"python310.dll\");\n                PythonEngine.PythonHome = Path.Combine(pathToVirtualEnv, \"python.exe\");\n                PythonEngine.PythonPath = @$\"{pathToVirtualEnv}\\Lib\\site-packages;{pathToVirtualEnv}\\Lib;{pathToVirtualEnv}\\DLLs\";\n\n            }\n            else if(RuntimeInformation.IsOSPlatform(OSPlatform.Linux))\n            {\n                //Virtualenv\n                var pathToVirtualEnv = \"/opt/miniconda3/envs/py310\";\n\n                Runtime.PythonDLL = $\"{pathToVirtualEnv}/lib/libpython3.10.so\";\n                \n                var path = Environment.GetEnvironmentVariable(\"PATH\").TrimEnd(';');\n                path = string.IsNullOrEmpty(path) ? pathToVirtualEnv : path + \";\" + pathToVirtualEnv;\n                Environment.SetEnvironmentVariable(\"PATH\", path, EnvironmentVariableTarget.Process);\n                Environment.SetEnvironmentVariable(\"PATH\", pathToVirtualEnv, EnvironmentVariableTarget.Process);\n                Environment.SetEnvironmentVariable(\"PYTHONHOME\", pathToVirtualEnv, EnvironmentVariableTarget.Process);\n                Environment.SetEnvironmentVariable(\"PYTHONPATH\", $\"{pathToVirtualEnv}/lib/python310.zip;{pathToVirtualEnv}/lib/python3.10;{pathToVirtualEnv}/lib/python3.10/lib-dynload;{pathToVirtualEnv}/lib/python3.10/site-packages;~/.local/lib/python3.10/site-packages\", EnvironmentVariableTarget.Process);\n\n                var pythonpath = Environment.GetEnvironmentVariable(\"PYTHONPATH\", EnvironmentVariableTarget.Process);;\n                Console.WriteLine(pythonpath);\n                PythonEngine.PythonHome = $\"{pathToVirtualEnv}/bin/python\";\n                PythonEngine.PythonPath = pythonpath;\n\n                \n\n            } else {\n                Console.WriteLine(\"This OS is not support\");\n                return;\n            }\n\n            PythonEngine.Initialize();
","upvoteCount":1,"answerCount":3,"acceptedAnswer":{"@type":"Answer","text":"

Oh my god!
\nIt's a mistake.
\nWe must use \":\" instead of \";\"

\n
            string winPath = @\"D:\\tools\\python310\";\n            string linuxPath = \"/opt/miniconda3/envs/py310\";\n\n\n            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))\n            {\n                string pathToVirtualEnv = winPath;\n                Runtime.PythonDLL = Path.Combine(pathToVirtualEnv, \"python310.dll\");\n                PythonEngine.PythonHome = Path.Combine(pathToVirtualEnv, \"python.exe\");\n                PythonEngine.PythonPath = @$\"{pathToVirtualEnv}\\Lib\\site-packages;{pathToVirtualEnv}\\Lib;{pathToVirtualEnv}\\DLLs\";\n\n            }\n            else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))\n            {\n                //Virtualenv\n                var pathToVirtualEnv = \"/opt/miniconda3/envs/py310\";\n\n                Runtime.PythonDLL = $\"{pathToVirtualEnv}/lib/libpython3.10.so\";\n\n                var path = Environment.GetEnvironmentVariable(\"PATH\").TrimEnd(':');\n                path = string.IsNullOrEmpty(path) ? pathToVirtualEnv : path + \":\" + pathToVirtualEnv;\n                Environment.SetEnvironmentVariable(\"PATH\", path, EnvironmentVariableTarget.Process);\n                Environment.SetEnvironmentVariable(\"PATH\", pathToVirtualEnv, EnvironmentVariableTarget.Process);\n                Environment.SetEnvironmentVariable(\"PYTHONHOME\", pathToVirtualEnv, EnvironmentVariableTarget.Process);\n                Environment.SetEnvironmentVariable(\"PYTHONPATH\", $\"{pathToVirtualEnv}/lib/python3.10:{pathToVirtualEnv}/lib/python3.10/lib-dynload:{pathToVirtualEnv}/lib/python3.10/site-packages:~/.local/lib/python3.10/site-packages\", EnvironmentVariableTarget.Process);\n                // {pathToVirtualEnv}/lib/python310.zip;\n                var pythonpath = Environment.GetEnvironmentVariable(\"PYTHONPATH\", EnvironmentVariableTarget.Process); ;\n                Console.WriteLine(pythonpath);\n                PythonEngine.PythonHome = $\"{pathToVirtualEnv}/bin/python\";\n                //PythonEngine.PythonHome = $\"{pathToVirtualEnv}\";\n                PythonEngine.PythonPath = pythonpath;\n\n\n\n            }\n            else\n            {\n                Console.WriteLine(\"This OS is not support\");\n                return;\n            }\n\n            PythonEngine.Initialize();\n
","upvoteCount":2,"url":"https://github.com/pythonnet/pythonnet/discussions/2217#discussioncomment-6789448"}}}
Discussion options

You must be logged in to vote

Oh my god!
It's a mistake.
We must use ":" instead of ";"

            string winPath = @"D:\tools\python310";
            string linuxPath = "/opt/miniconda3/envs/py310";


            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                string pathToVirtualEnv = winPath;
                Runtime.PythonDLL = Path.Combine(pathToVirtualEnv, "python310.dll");
                PythonEngine.PythonHome = Path.Combine(pathToVirtualEnv, "python.exe");
                PythonEngine.PythonPath = @$"{pathToVirtualEnv}\Lib\site-packages;{pathToVirtualEnv}\Lib;{pathToVirtualEnv}\DLLs";

            }
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))…

Replies: 3 comments 1 reply

Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
1 reply
@zhanxh
Comment options

Comment options

You must be logged in to vote
0 replies
Answer selected by zhanxh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants
Converted from issue

This discussion was converted from issue #2216 on August 09, 2023 07:01.