Как развернуть расширения Python (общие библиотеки) с несколькими архитектурами ⇐ Python
Как развернуть расширения Python (общие библиотеки) с несколькими архитектурами
Контекст: можно скомпилировать код C так, чтобы его можно было использовать в качестве модуля Python. Скомпилированный объект представляет собой общую библиотеку с определенным именем, поэтому Python может найти и загрузить ее как модуль.
Отлично. Я успешно скомпилировал и протестировал код, так что файл «foo.c» становится общей библиотекой «foo.so», и код Python import foo работает.
Цель — распространить набор общих библиотек для Mac, Linux и Windows, где import foo загружает соответствующую двоичную общую библиотеку.
Концептуально я хочу, чтобы мой дистрибутив содержал каталог с тремя файлами:
mypkg/ ┠─ __init__.py ┠─ foo.so (linux) ┠─ foo.dylib (mac) ┖─ foo.dll (Windows) таким образом, что из mypkg import foo выбирает подходящую библиотеку. Я не хочу распространять исходный код foo.c.
Проблема в том, что Mac выберет файл .so и пожалуется:
ImportError: dlopen(/.../mypkg/foo.so, 0x0002): пробовал: '/.../mypkg/foo.so' (не файл mach-o) Существует ли шаблон/схема именования, которая позволила бы это (если не считать написания специального загрузчика модулей)?
Контекст: можно скомпилировать код C так, чтобы его можно было использовать в качестве модуля Python. Скомпилированный объект представляет собой общую библиотеку с определенным именем, поэтому Python может найти и загрузить ее как модуль.
Отлично. Я успешно скомпилировал и протестировал код, так что файл «foo.c» становится общей библиотекой «foo.so», и код Python import foo работает.
Цель — распространить набор общих библиотек для Mac, Linux и Windows, где import foo загружает соответствующую двоичную общую библиотеку.
Концептуально я хочу, чтобы мой дистрибутив содержал каталог с тремя файлами:
mypkg/ ┠─ __init__.py ┠─ foo.so (linux) ┠─ foo.dylib (mac) ┖─ foo.dll (Windows) таким образом, что из mypkg import foo выбирает подходящую библиотеку. Я не хочу распространять исходный код foo.c.
Проблема в том, что Mac выберет файл .so и пожалуется:
ImportError: dlopen(/.../mypkg/foo.so, 0x0002): пробовал: '/.../mypkg/foo.so' (не файл mach-o) Существует ли шаблон/схема именования, которая позволила бы это (если не считать написания специального загрузчика модулей)?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение