Запуск файлов pyd со встроенным Python в других системахPython

Программы на Python
Ответить
Anonymous
 Запуск файлов pyd со встроенным Python в других системах

Сообщение Anonymous »

Итак, я пишу плагин Python для средства запуска потока, который имеет зависимость, использующую расширения C, скомпилированные в файлы pyd (извините, если я сказал неправильно, я не очень уверен в том, как это назвать/как это описать). ). Проблема, с которой я сталкиваюсь, заключается в том, что средство запуска потока требует, чтобы плагины были упакованы с их зависимостями, что приводит к ошибкам в том, что файл pyd для зависимости не найден, поскольку его нет для конкретной ОС и архитектуры. (Для справки, я говорю о зависимости msgspec).
Зависимости обычно работают с плагинами Python для потока: они упаковываются в папку lib. который включает в себя зависимости, при этом основной файл плагина имеет что-то вроде следующего вверху:

Код: Выделить всё

import os
import sys

parent_folder_path = os.path.abspath(os.path.dirname(__file__))
sys.path.append(parent_folder_path)
sys.path.append(os.path.join(parent_folder_path, "lib"))
чтобы добавить папку lib в путь.
Еще кое-что о средстве запуска Flow, о котором мне, вероятно, следует упомянуть:
  • Только для Windows
  • Вы можете выбрать используемую установку Python, но по умолчанию устанавливается и используется встроенная версия 3.11.
Я попробовал пару вещей, например проверяет, не найден ли файл pyd при запуске, и если да, принудительно переустанавливает msgspec, однако по умолчанию поток загружает встроенную версию Python 3.11 для плагинов Python, в которой нет pip.
После этого я попытался установить его напрямую с помощью файла setup.py, и ближе всего я выполнил следующую команду:

Код: Выделить всё

 -c "__import__('sys').path.append(str(__import__('pathlib').Path(__import__('os').getcwd()).parent));__import__('sys').path.append(str(__import__('pathlib').Path(__import__('os').getcwd())));import runpy; runpy.run_module('setup')" install
однако при этом msgspec устанавливается глобально во встроенной установке Python, что может привести к конфликтам версий. Кроме того, это устарело и работает не для всех библиотек.
Я также попробовал установить все файлы pyd для всех поддерживаемых архитектур (до сих пор не уверен, возможно ли это вообще), однако я дошло только до создания проблемы на их странице github.
Редактировать:
Я нашел другие зависимости, которые имеют ту же проблему, поэтому решение должно работать для других зависимостей, например ну

Подробнее здесь: https://stackoverflow.com/questions/793 ... er-systems
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»