New submission from Gregory Szorc <[email protected]>:
ctypes/__init__.py calls _ctypes.dlopen(None) on Linux as part of code
execution during module import. Unfortunately, dlopen() doesn't work if the
current executable isn't a dynamic executable.
Using a fully statically linked Python executable:
$ ldd python3.7
not a dynamic executable
$ python3.7
>>> import _ctypes
>>> _ctypes.dlopen(None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: Dynamic loading not supported
>>> import ctypes
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File
"/home/gps/src/python-build-standalone.git/build/python/install/lib/python3.7/ctypes/__init__.py",
line 444, in <module>
pythonapi = PyDLL(None)
File
"/home/gps/src/python-build-standalone.git/build/python/install/lib/python3.7/ctypes/__init__.py",
line 356, in __init__
self._handle = _dlopen(self._name, mode)
OSError: Dynamic loading not supported
I think it is a bug that `import ctypes` raises OSError at import time in this
environment. I can make a compelling argument that this error should either be
suppressed or converted to an ImportError.
Producing a fully statically linked Python executable is a bit of work and
isn't easily accomplished with the existing build system. My
"python-build-standalone" project automates the process. A fully statically
linked Python executable is available in the zstd compressed archive at
https://github.com/indygreg/python-build-standalone/releases/download/20190505/cpython-3.7.3-linux64-musl-20190526T0219.tar.zst
under the python/install/bin/python3.7 path. Simply extract that archive and
run that binary to reproduce.
----------
components: ctypes
messages: 343588
nosy: indygreg
priority: normal
severity: normal
status: open
title: import ctypes fails with a statically linked interpreter due to dlopen()
failure
versions: Python 3.7
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue37060>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com