- Notifications
You must be signed in to change notification settings - Fork749
Closed
Description
Environment
- Pythonnet version: 2.5.1
- Python version: 3.7.9
- Operating System: Windows 10
Details
- Describe what you were trying to get done.
pythonnet overwrites the python's__import__
routine, but does not implement python's signature precisely:
original python's signature is
__import__(name,globals=None,locals=None,fromlist=(),level=0)
Most other python modules call the name parameter as positional:__import__("foo", ...
Some packages (e.g. kivy) use__import__
as
__import__(name='{2}.{0}.{1}'.format(basemodule,modulename,base),globals=globals(),locals=locals(),fromlist=[modulename],level=0 )
i.e. the name argument used as keyword argument in the call. Both calls are valid in python's__import__
, but fail at the overwritten__import__
with
TypeError:__import__()takesatleast1argument (0given)
A hotfix is to alter the other modules code to
__import__('{2}.{0}.{1}'.format(basemodule,modulename,base),globals=globals(),locals=locals(),fromlist=[modulename],level=0 )
but the broken code is within pythonnet.
Metadata
Metadata
Assignees
Labels
No labels