Я пытаюсь распространять библиотеку Python, которая динамически загружает общий объектный файл, используя ctypes
. Общий объектный файл был создан с использованием Golang. У меня есть простой main.go
файл, который выполняет некоторые сетевые запросы по нескольким переданным ссылкам, и .so
& .h
файлы, созданные из этого. Я следовал этим инструкциям для компиляции заголовка и файла общего объекта: https://medium.com/learning-the-go-programming-language/calling-go-functions-from-other-languages-4c7d8bcc69bf
Текущая структура библиотеки: cwd (текущий рабочий каталог)
cwd/display_status/display_status.py
cwd/display_status/__init__.py
cwd/display_status/display_status.h
cwd/display_status/display_status.so
cwd/display_status/main.go
display_status.py
работает правильно при прямом запуске pyhton3 display_status.py
, но когда я загружаю библиотеку в PyPI и пытаюсь import display_status
Я получаю эту ошибку.
ImportError: dynamic module does not define module export function (PyInit_display_status)
Я пробовал различные настройки, предоставленные https://setuptools.readthedocs.io/en/latest/, но безрезультатно.
Моя текущая настройка
import pathlib
from setuptools import setup, find_packages, Extension
# The directory containing this file
HERE = pathlib.Path(__file__).parent
# The text of the README file
README = (HERE / "README.md").read_text()
module1 = Extension('display_status', sources=['main.go'])
# This call to setup() does all the work
setup(
name="display_status",
version="1.0.11",
description="Displays the status of links",
long_description=README,
long_description_content_type="text/markdown",
url="https://github.com/KingAkeem/display_status",
author="Akeem King",
author_email="akeemtlking@gmail.com",
license="GNU GPLv3",
classifiers=[
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
],
packages=['display_status'],
package_data=find_packages(),
"""
package_data={
'display_status':
[
'main.go',
'display_status.h',
'display_status.so'
]
},
"""
include_package_data=True
)