pythonnet / pythonnet/clr-loader

netfx loader with LOAD_LIBRARY_SEARCH_USER_DIRS

Offen
#77 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Python
Sterne
42
Forks
32
Ø Merge
14 Std. 1 Min.
Gemergte PRs (30 T.)
1

Beschreibung

If the win32 API SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_USER_DIRS) is used, the default clr_loader doesn't work.

import ctypes
from ctypes import wintypes

dll = ctypes.CDLL("Kernel32.dll")
dll.SetDefaultDllDirectories.argtypes=[wintypes.DWORD]
LOAD_LIBRARY_SEARCH_USER_DIRS = 0x00000400
dll.SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_USER_DIRS)
import clr # <---- crash

This search mode is documented here

It is used in the python distribution from the windows store (although I don't know if this issue is reproducible there) as well as some embedders of Python.

I tried the following as a workaround:
import os
os.add_dll_directory(r"C:\Windows\Microsoft.NET\Framework64\v4.0.30319")
os.add_dll_directory(r"C:\path\to\python\env\site-packages\clr_loader\ffi\dlls\amd64")

And it didn't work.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie damit, das Python-Snippet zu reproduzieren, das vor dem Import von clr SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_USER_DIRS) aufruft. Untersuchen Sie den DLL-Ladepfad von clr_loader und dessen Verzeichnis ffi/dlls/amd64 und überprüfen Sie anschließend, dass der Import von clr unter diesem Windows-Suchmodus funktioniert, ohne auf den gemeldeten Workaround zurückzugreifen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
devtools, operating-systems
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.