\n\nexport 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
/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 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();Oh my god!
\nIt's a mistake.
\nWe must use \":\" instead of \";\"
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-
Environment
Details
This error occurs in virtualenv and conda, and has not been tested in other ways. (Initialized successfully in windows.)
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))
{
//Virtualenv
var pathToVirtualEnv = "/opt/miniconda3/envs/py310";
Runtime.PythonDLL = $"{pathToVirtualEnv}/lib/libpython3.10.so";
var path = Environment.GetEnvironmentVariable("PATH").TrimEnd(';');
path = string.IsNullOrEmpty(path) ? pathToVirtualEnv : path + ";" + pathToVirtualEnv;
Environment.SetEnvironmentVariable("PATH", path, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PATH", pathToVirtualEnv, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONHOME", pathToVirtualEnv, EnvironmentVariableTarget.Process);
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);
var pythonpath = Environment.GetEnvironmentVariable("PYTHONPATH", EnvironmentVariableTarget.Process);;
Console.WriteLine(pythonpath);
PythonEngine.PythonHome = $"{pathToVirtualEnv}/bin/python";
PythonEngine.PythonPath = pythonpath;
} else {
Console.WriteLine("This OS is not support");
return;
}
PythonEngine.Initialize(); |
Beta Was this translation helpful? Give feedback.
-
|
The reason for not accepting the answer is that there is a question in the python environment. |
Beta Was this translation helpful? Give feedback.
-
|
I had a similar issue, but a completely different environment, so I'm not sure if it applies. By default, pythonnet works with the .NET Framework environment, not core. Instructions for loading core: In my environment that alone isn't enough, because some of my dependencies could work with .NET 6 or 7, but there was no directive either way. My options were to load the .NET 7 runtuime or add in a reference to the runtimeconfig. You're running out of a .NET 6 application, so I would think the runtimeconfig.json for your app would be used? |
Beta Was this translation helpful? Give feedback.
-
|
Oh my god! |
Beta Was this translation helpful? Give feedback.
Oh my god!
It's a mistake.
We must use ":" instead of ";"