Python.Included
Python.Included copied to clipboard
Python.Runtime.BadPythonDllException
using System; using System.IO; using System.Threading.Tasks; using Python.Runtime;
namespace Python.Deployment.Download { class Program { static async Task Main(string[] args) { // ================================================ // This example demonstrates how to download a Python distribution (v2.7.9) and install it locally // ================================================
// set the download source
Python.Deployment.Installer.Source = new Deployment.Installer.DownloadInstallationSource()
{
DownloadUrl = @"https://www.python.org/ftp/python/3.7.3/python-3.7.3-embed-amd64.zip",
};
// install in local directory. if you don't set it will install in local app data of your user account
Python.Deployment.Installer.InstallPath = Path.GetFullPath(".");
// see what the installer is doing
Python.Deployment.Installer.LogMessage += Console.WriteLine;
// install from the given source
await Python.Deployment.Installer.SetupPython();
// ok, now use pythonnet from that installation
PythonEngine.Initialize();
// call Python's sys.version to prove we are executing the right version
dynamic sys=Py.Import("sys");
Console.WriteLine("### Python version:\n\t" + sys.version);
// call os.getcwd() to prove we are executing the locally installed embedded python distribution
dynamic os = Py.Import("os");
Console.WriteLine("### Current working directory:\n\t" + os.getcwd());
Console.WriteLine("### PythonPath:\n\t" + PythonEngine.PythonPath);
}
}
}
PythonEngine.Initialize(); error!!!
Python.Runtime.BadPythonDllException:“Runtime.PythonDLL was not set or does not point to a supported Python runtime DLL. See https://github.com/pythonnet/pythonnet#embedding-python-in-net”
did you compile this for x86 ?
You may have to set this
I have already set it to x64, but the problem still persists. If I don't specify the Python version, it will automatically download Python 3.11 without any error. However, when I specify the Python version, it throws an error.
using System;
using System.Threading.Tasks;
using Python.Included;
using Python.Runtime;
namespace NetCoreExample
{
class Program
{
static async Task Main(string[] args)
{
await Installer.SetupPython();
PythonEngine.Initialize();
dynamic sys=PythonEngine.ImportModule("sys");
Console.WriteLine("Python version: " + sys.version);
}
}
}
dynamic sys=PythonEngine.ImportModule("sys");
The last line should be changed to:
dynamic sys=Py.Import("sys")
and that solves it?
There is no error when the program automatically downloads python, and if you want to set the python version by yourself, it is still not solved
I guess the newer version of pythonnet doesn't work with old python versions any more?