Skip to content

PythonEngine fails to initialize in VSIX extension #2404

@cpgames

Description

@cpgames

Environment

  • Pythonnet version: 3.0.3, 3.1.0
  • Python version: 3.09
  • Operating System: Win11
  • .NET Runtime: 4.8

Details

  • Describe what you were trying to get done.

I am trying to use pythonnet package in a VSIX Visual Studio extension.
The Experimental VS Instance initializes pythonnet fine, however deploying an extension causes this crash.
I suspect there may be some threading issues, but am not sure what to look for.

try
{
    Runtime.PythonDLL = pythonFile.FullName;
    PythonEngine.PythonHome = pythonFile.DirectoryName!;
    OutputWindowHelper.LogInfo("PythonEngine", "Initializing Python engine.");
    PythonEngine.Initialize(); // crash here
    PythonEngine.BeginAllowThreads();
}
catch (Exception ex)
{
    OutputWindowHelper.LogError(ex);
}
  • If there was a crash, please include the traceback here.
[INFO] - PythonEngine: Initializing Python engine.
[ERROR]: Object reference not set to an instance of an object.
[TRACE]:    at Python.Runtime.ClassManager.GetClassInfo(Type type, ClassBase impl)
   at Python.Runtime.ClassManager.InitClassBase(Type type, ClassBase impl, ReflectedClrType pyType)
   at Python.Runtime.ReflectedClrType.GetOrCreate(Type type)
   at Python.Runtime.ModuleObject.GetAttribute(String name, Boolean guess)
   at Python.Runtime.ModuleObject.LoadNames()
   at Python.Runtime.ImportHook.UpdateCLRModuleDict()
   at Python.Runtime.PythonEngine.Initialize(IEnumerable`1 args, Boolean setSysArgv, Boolean initSigs)
   at Python.Runtime.PythonEngine.Initialize()
   at cpGames.VSA.ToolAPI.<InitializePythonEngineAsync>d__2.MoveNext() in ToolAPI.cs:line 69 // PythonEngine.Initialize(); call

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