GeezerVison is showing github.com — PythonEngine fails to initialize in VSIX extension · pythonnet/pythonnet · Discussion #2405
PythonEngine fails to initialize in VSIX extension
#2405
Jun 22, 2024
·
2 comments
Discussion options
-
Uh oh!
There was an error while loading. Please reload this page.
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
|
You must be logged in to vote
Why you close my issue?
Here's your fix:
internal static bool ShouldBindEvent(EventInfo ei)
{
var mb = ei.GetAddMethod(true);
if (mb == null)
{
return false;
}
return ShouldBindMethod(mb);
}
Check your nulls, thank me later.
Comment options
-
Uh oh!
There was an error while loading. Please reload this page.
-
Uh oh!
There was an error while loading. Please reload this page.
|
Why you close my issue?
Here's your fix:
internal static bool ShouldBindEvent(EventInfo ei)
{
var mb = ei.GetAddMethod(true);
if (mb == null)
{
return false;
}
return ShouldBindMethod(mb);
}
Check your nulls, thank me later.
|
You must be logged in to vote
0 replies
Comment options
-
Uh oh!
There was an error while loading. Please reload this page.
-
Uh oh!
There was an error while loading. Please reload this page.
|
Hello ,
I have the same issue, I am trying to use pythonnet package in a VSIX Visual Studio extension.

I am going to apply this fix above made by @cpgames and see if the problem persists.
Do you intend to release this fix in a future version of pythonnet ?
Regards,
|
You must be logged in to vote
0 replies
Converted from issue
This discussion was converted from issue #2404 on June 23, 2024 07:54.