Commit f59a785d authored by Kirill Smelkov's avatar Kirill Smelkov

golang: Fix import on Windows

We already fixed DSO path setup for Windows in a5ce8175 (golang: Prepare
path for libgolang.dll before importing _golang), but after 68f384a9 (*:
Replace imp with importlib on py3) it got broken again because
golang._gopath started to import golang.sync and import of
golang._gopath was before dylink_prepare_dso call:

    (1.wenv-386) Z:\home\kirr\src\tools\go\pygo-win\pygolang>python
    Python 3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:21:31) [MSC v.1936 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.

    >>> import golang
    00f8:err:module:import_dll Library libgolang.dll (which is needed by L"Z:\\home\\kirr\\src\\tools\\go\\pygo-win\\pygolang\\golang\\_sync.cp311-win32.pyd") not found
    00f8:err:module:import_dll Library libpyxruntime.dll (which is needed by L"Z:\\home\\kirr\\src\\tools\\go\\pygo-win\\pygolang\\golang\\_sync.cp311-win32.pyd") not found
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "Z:\home\kirr\src\tools\go\pygo-win\pygolang\golang\__init__.py", line 41, in <module>
        from golang._gopath import gimport  # make gimport available from golang
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "Z:\home\kirr\src\tools\go\pygo-win\pygolang\golang\_gopath.py", line 65, in <module>
        from golang import sync
      File "Z:\home\kirr\src\tools\go\pygo-win\pygolang\golang\sync.py", line 36, in <module>
        from golang._sync import \
    ImportError: DLL load failed while importing _sync: Модуль не найден.

-> Fix that by doing dylink_prepare_dso('golang.runtime.libgolang')
before importing anything else.
parent 91a434d5
......@@ -38,13 +38,13 @@ __version__ = "0.1"
__all__ = ['go', 'chan', 'select', 'default', 'nilchan', 'defer', 'panic',
'recover', 'func', 'error', 'b', 'u', 'gimport']
import setuptools_dso
setuptools_dso.dylink_prepare_dso('golang.runtime.libgolang')
from golang._gopath import gimport # make gimport available from golang
import inspect, sys
import decorator, six
import setuptools_dso
setuptools_dso.dylink_prepare_dso('golang.runtime.libgolang')
from golang._golang import _pysys_exc_clear as _sys_exc_clear
# @func is a necessary decorator for functions for selected golang features to work.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment