New submission from Ronald Oussoren <ronaldousso...@mac.com>:
Python supports having a C extension for the the __init__ of a package (instead of having __init__.py). This works fine on Linux, but on Windows distutils fails to build the C extension because it assumes the entry point is named PyInit___init__ while importlib expects PyInit_*package* (for a package named *package*). When building the extension I get the following error: LINK : error LNK2001: unresolved external symbol PyInit___init__ build\temp.win32-3.7\Release\__init__.cp37-win32.lib : fatal error LNK1120: 1 unresolved externals The code below can be used to reproduce the issue. Setup.py (extracted from a larger setup.py, but should work...): from setuptools import setup, Extension extension3 = Extension("ext_package.__init__", sources=["init.c"]) setup( ext_modules=[extension3], ) Source code for the module (init.c): #include "Python.h" static PyModuleDef mod_def = { PyModuleDef_HEAD_INIT, "ext_package.__init__", NULL, 0, NULL, NULL, NULL, NULL, NULL }; PyObject* PyInit_ext_package(void) { return PyModule_Create(&mod_def); } P.S. I cannot easily debug this, I ran into this when testing one of my projects on AppVeyor and don't have a local Windows machine. ---------- components: Distutils, Windows messages: 334800 nosy: dstufft, eric.araujo, paul.moore, ronaldoussoren, steve.dower, tim.golden, zach.ware priority: normal severity: normal status: open title: distutils fails to build extension on windows when it is a package.__init__ type: behavior versions: Python 3.6, Python 3.7 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue35893> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com