Skip to content

Failed to load symbol PyDictProxy_New #1410

@Strdate

Description

@Strdate

Environment

  • Pythonnet version: Newest, built from github - commit f2dc8f1
  • Python version: ??
  • Operating System: Windows 10
  • .NET Runtime: .net framework 4.5

Details

Hi, I'm trying to switch from IronPython to pythonnet in my project. Unfortunately, I can't make the engine work.

I'm trying to create the engine like this, but it throws an exception:

public class PythonEngine : IDisposable
    {
        private ClientHandler client;

        private Py.GILState _engine;
        private PyScope _scope;
        private GameAPI _gameAPI;

        public PythonEngine(ClientHandler client)
        {
            this.client = client;
            _engine = Py.GIL();
            _scope = Py.CreateScope();
            _gameAPI = new GameAPI(client, _scope);

            PrepareStaticLocals();
            
            var outputStream = new MemoryStream();
            var outputStreamWriter = new TcpStreamWriter(outputStream, client);
            //_engine.Runtime.IO.SetOutput(outputStream, outputStreamWriter);
        }
...
}

I am not wrapping the code in using statement because I need to use the same scope later in the code (I dispose it manually instead). Anyway, the code throws this exception:

System.TypeInitializationException: Inicializační metoda typu Delegates vyvolala výjimku. ---> System.MissingMethodException: Failed to load symbol PyDictProxy_New ---> System.ComponentModel.Win32Exception: Uvedená procedura nebyla nalezena
   --- Konec trasování zásobníku pro vnitřní výjimku ---
   v Python.Runtime.Platform.WindowsLoader.GetFunction(IntPtr hModule, String procedureName)
   v Python.Runtime.Runtime.Delegates.GetFunctionByName(String functionName, IntPtr libraryHandle)
   v Python.Runtime.Runtime.Delegates..cctor()
   --- Konec trasování zásobníku pro vnitřní výjimku ---
   v Python.Runtime.Runtime.Delegates.get_Py_IsInitialized()
   v Python.Runtime.Runtime.Py_IsInitialized()
   v Python.Runtime.Runtime.Initialize(Boolean initSigs, ShutdownMode mode)
   v Python.Runtime.PythonEngine.Initialize(IEnumerable`1 args, Boolean setSysArgv, Boolean initSigs, ShutdownMode mode)
   v Python.Runtime.PythonEngine.Initialize(Boolean setSysArgv, Boolean initSigs, ShutdownMode mode)
   v Python.Runtime.PythonEngine.Initialize()
   v Python.Runtime.Py.GIL()
   v SkylinesRemotePython.PythonEngine..ctor(ClientHandler client)
   v SkylinesRemotePython.ClientHandler.HandleClient()

What am I doing wrong?

There are a few key things that I don't understand about pythonnet, which may or may not be connected to this issue. First, do I need to have Python installed on my computer? IronPython apparently works as standalone library, but I don't know how about pythonnet.

Which files do I need to ship with my program? Python.Runtime.dll, System.Security.AccessControl.dll, System.Security.Permissions.dll, System.Security.Principal.Windows.dll

Thanks :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions