Title: Loading runtime in blender on macOS 15.1 causes `MissingMethodException` · Issue #2503 · pythonnet/pythonnet · GitHub
Open Graph Title: Loading runtime in blender on macOS 15.1 causes `MissingMethodException` · Issue #2503 · pythonnet/pythonnet
X Title: Loading runtime in blender on macOS 15.1 causes `MissingMethodException` · Issue #2503 · pythonnet/pythonnet
Description: Environment Pythonnet version: 3.0.4 Python version: 3.11.7 Operating System: macOS 15.1 (24B83), ARM64 .NET Runtime: 8.0 Details I am using pythonnet for a blender extension, and for the most part, it works great! However, recently a us...
Open Graph Description: Environment Pythonnet version: 3.0.4 Python version: 3.11.7 Operating System: macOS 15.1 (24B83), ARM64 .NET Runtime: 8.0 Details I am using pythonnet for a blender extension, and for the most part...
X Description: Environment Pythonnet version: 3.0.4 Python version: 3.11.7 Operating System: macOS 15.1 (24B83), ARM64 .NET Runtime: 8.0 Details I am using pythonnet for a blender extension, and for the most part...
Opengraph URL: https://github.com/pythonnet/pythonnet/issues/2503
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Loading runtime in blender on macOS 15.1 causes `MissingMethodException`","articleBody":"### Environment\r\n\r\n- Pythonnet version: 3.0.4\r\n- Python version: 3.11.7\r\n- Operating System: macOS 15.1 (24B83), ARM64\r\n- .NET Runtime: 8.0\r\n\r\n---\r\n\r\n### Details\r\n\r\nI am using pythonnet for a blender extension, and for the most part, it works great!\r\n\r\nHowever, recently a user reported that it does not run on their macOS system, which throws following error upon trying to load `coreclr`:\r\n`System.MissingMethodException: Failed to load symbol Py_Main: dlsym(RTLD_DEFAULT, Py_Main): symbol not found`\r\n\r\nThe error does not occur when attempting to do so using the python executable shipped with blender directly. \r\nIt only happens when running from within blender itself.\r\n\r\n---\r\n\r\n### Minimal Reproduction\r\n\r\n1. Get a device with macOS 15.1 and ARM64 architecture\r\n2. download blender 4.2\r\n3. Create the files `script.py` and `runtimeconfig.json` in the same directory with the contents pasted below\r\n4. Run blender with the commandline argument `-P path/to/script.py`\r\n\r\n(note: the crash occurs without `runtimeconfig.json` as well, but i still included it for good measure)\r\n\r\n#### script.py\r\n```python\r\ndef run():\r\n try:\r\n import pythonnet\r\n except ModuleNotFoundError:\r\n import pip\r\n pip.main([\"install\", \"pythonnet\"])\r\n\r\n try:\r\n import pythonnet\r\n except ModuleNotFoundError:\r\n print(\"Could not install python.net, please try running blender with admin rights or run a portable instance of blender in a directory with write access\")\r\n return\r\n\r\n import pathlib\r\n runtime_config_path = pathlib.Path(__file__).parent / \"runtimeconfig.json\"\r\n pythonnet.load(\"coreclr\", runtime_config=runtime_config_path)\r\n\r\n from System import Console\r\n Console.WriteLine(\"Pythonnet successfully loaded!\")\r\n\r\nrun()\r\n```\r\n\r\n#### runtimeconfig.json\r\n```json\r\n{\r\n \"runtimeOptions\": {\r\n \"tfm\": \"net8.0\",\r\n \"framework\": {\r\n \"name\": \"Microsoft.NETCore.App\",\r\n \"version\": \"8.0.0\"\r\n },\r\n \"configProperties\": {\r\n \"System.Reflection.Metadata.MetadataUpdater.IsSupported\": false,\r\n \"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization\": false\r\n }\r\n }\r\n}\r\n```\r\n\r\n---\r\n\r\n### Console output / Stacktrace\r\n\r\n```python\r\nFailed to initialize pythonnet: System.TypeInitializationException: The type initializer for 'Delegates' threw an exception.\r\n ---\u003e 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\r\n ---\u003e System.MissingMethodException: Failed to load symbol Py_Main: dlsym(RTLD_DEFAULT, Py_Main): symbol not found\r\n at Python.Runtime.Platform.PosixLoader.GetFunction(IntPtr dllHandle, String name) in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Native/LibraryLoader.cs:line 85\r\n at Python.Runtime.Runtime.Delegates.GetFunctionByName(String functionName, IntPtr libraryHandle) in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Runtime.Delegates.cs:line 296\r\n --- End of inner exception stack trace ---\r\n at Python.Runtime.Runtime.Delegates.GetFunctionByName(String functionName, IntPtr libraryHandle) in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Runtime.Delegates.cs:line 300\r\n at Python.Runtime.Runtime.Delegates..cctor() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Runtime.Delegates.cs:line 38\r\n --- End of inner exception stack trace ---\r\n at Python.Runtime.Runtime.Delegates.get_PyGILState_Ensure() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Runtime.Delegates.cs:line 319\r\n at Python.Runtime.Runtime.PyGILState_Ensure() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Runtime.cs:line 712\r\n at Python.Runtime.PythonEngine.AcquireLock() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/PythonEngine.cs:line 479\r\n at Python.Runtime.Py.GILState..ctor() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Py.cs:line 27\r\n at Python.Runtime.Py.GIL() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Py.cs:line 13\r\n at Python.Runtime.Loader.Initialize(IntPtr data, Int32 size) in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Loader.cs:line 26\r\n at Python.Runtime.Runtime.Delegates.get_PyGILState_Ensure() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Runtime.Delegates.cs:line 319\r\n at Python.Runtime.Runtime.PyGILState_Ensure() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Runtime.cs:line 712\r\n at Python.Runtime.PythonEngine.AcquireLock() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/PythonEngine.cs:line 479\r\n at Python.Runtime.Py.GILState..ctor() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Py.cs:line 27\r\n at Python.Runtime.Py.GIL() in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Py.cs:line 13\r\n at Python.Runtime.Loader.Initialize(IntPtr data, Int32 size) in /home/benedikt/dev/pythonnet/dist/.tmpXppz4v/pythonnet-3.0.4/src/runtime/Loader.cs:line 26Traceback (most recent call last):\r\n File \"/Users/user/Documents/Test/pythonnet_issue.py\", line 22, in \u003cmodule\u003e\r\n run()\r\n File \"/Users/user/Documents/Test/pythonnet_issue.py\", line 17, in run\r\n pythonnet.load(\"coreclr\", runtime_config=config)\r\n File \"/Users/user/Library/Application Support/Blender/4.2/extensions/.local/lib/python3.11/site-packages/pythonnet/__init__.py\", line 146, in load\r\n raise RuntimeError(\"Failed to initialize Python.Runtime.dll\")\r\nRuntimeError: Failed to initialize Python.Runtime.dll\r\n```\r\n\r\nNote: \r\nHere, pythonnet is located in blenders extension folder, which ships pythonnet 3.0.4 via wheels. \r\nRemoving it does unfortunately not change the result.","author":{"url":"https://github.com/Justin113D","@type":"Person","name":"Justin113D"},"datePublished":"2024-11-07T22:45:14.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/2503/pythonnet/issues/2503"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:0cb350d7-cf6b-8788-a5b1-ff7c46fc5299 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | AF72:2AE294:1F9A438:2A93F6D:69702D8E |
| html-safe-nonce | c9eb83a381496158cd9141cb86b5a2bf13efca5a70ef7da5b71f495ca2620af1 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBRjcyOjJBRTI5NDoxRjlBNDM4OjJBOTNGNkQ6Njk3MDJEOEUiLCJ2aXNpdG9yX2lkIjoiMjM1MTMxNjAyNzUwOTQyNjA2IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 00425b284bd9953b85c2aadc670401aac0babf256436d3a4bcf39b88934cc4b3 |
| hovercard-subject-tag | issue:2642379556 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/pythonnet/pythonnet/2503/issue_layout |
| twitter:image | https://opengraph.githubassets.com/a02772ff35ed22a2aae206bb8bcb9f3c82359a0d176ebd71641ae129aef31aea/pythonnet/pythonnet/issues/2503 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/a02772ff35ed22a2aae206bb8bcb9f3c82359a0d176ebd71641ae129aef31aea/pythonnet/pythonnet/issues/2503 |
| og:image:alt | Environment Pythonnet version: 3.0.4 Python version: 3.11.7 Operating System: macOS 15.1 (24B83), ARM64 .NET Runtime: 8.0 Details I am using pythonnet for a blender extension, and for the most part... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | Justin113D |
| hostname | github.com |
| expected-hostname | github.com |
| None | 01fa379f5de85ef8e791d09724e69709ce9eb9595278316e0a921312dc88e0bc |
| turbo-cache-control | no-preview |
| go-import | github.com/pythonnet/pythonnet git https://github.com/pythonnet/pythonnet.git |
| octolytics-dimension-user_id | 6050430 |
| octolytics-dimension-user_login | pythonnet |
| octolytics-dimension-repository_id | 14748123 |
| octolytics-dimension-repository_nwo | pythonnet/pythonnet |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 14748123 |
| octolytics-dimension-repository_network_root_nwo | pythonnet/pythonnet |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | dda91974c069382b0dfa47b2da7e28bd061c8331 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width