Я был бы очень спасен, если бы кто-нибудь мог мне в этом помочь!
Я работаю со старым проектом C++ с открытым исходным кодом из github, который не имел официального обновления начиная с Python 3.4: https://github.com/Mindwerks/plate-tectonics
Используя новую установку Python 3.10.11, мне удалось скомпилировать этот проект в PyCharm venv, используя прилагаемый файл setup.py из этой папки: https://github.com/Mindwerks/plate-tectonics/blob /master/pybindings/setup.py
Когда я скомпилирую это, я смогу вручную скопировать + вставить полученный файл *.pyd в папку venv\Lib\site-packages Pycharm. Этот пакет работает именно так, как должен.
Однако по практическим соображениям я хочу переключиться на использование среды conda. Я создал эту среду (python 3.10.13, возможно Cython?) и выполнил те же шаги, что и для PyCharm: откройте среду в терминале conda, запустите «python setup.py build» и скопируйте файл *.pyd. компилируется в папку \Lib\site-packages среды.
Однако теперь, если я попытаюсь запустить функции из пакета, Python немедленно выйдет из строя.
Я совершенно не понимаю, в чем может быть проблема и как ее решить. У меня нет большого опыта работы с C++ или компиляции пакетов, и я не получаю никаких сообщений об ошибках, указывающих на то, что я делаю неправильно. Я предполагаю, что среда conda ведет себя иначе, чем среда Pycharm venv, но мне не удалось найти никаких предложений относительно того, что мне следует делать по-другому.
Если у кого-то есть опыт в этом и знает, что я могу сделать, вы мне очень поможете!!!
Привет, пользователь 4581301. Спасибо. Я понимаю проблему, но, как вы понимаете, я в затруднительном положении. Моя главная проблема заключается в том, что мне не хватает понимания компиляции C++ в Python, чтобы даже знать, что кому-то понадобится, чтобы начать диагностировать проблему. На данный момент я был бы рад просто ответу, который позволит мне задать лучший вопрос.
в вашем вопросе отсутствуют некоторые вещи. 1. подробные шаги с точными командами для воспроизведения проблемы — что-то вроде — Часть 1 — создание среды Python с версией 3.11.x — a. беги pip install ..., б. беги git pull ... в. запустите gcc ..., cp ...*.pyd ...*.pyd и т. д., а также ожидаемый результат и полученный результат 2. поскольку вы компилируете двоичный файл - архитектуру ОС и процессора, а также любые другие детали.






Кажется, проблема была в следующем фрагменте кода из старого setup.py файла:
# We add all .cpp files to the sources
sources = [ 'platec_src/platecmodule.cpp']
for f in os.listdir(cpp_src_dir):
if f.endswith(".cpp"):
sources.append("%s/%s" % (cpp_src_dir, f))
В частности, последняя строка, которую нужно было изменить на:
# We add all .cpp files to the sources
sources = [ 'platec_src/platecmodule.cpp']
for f in os.listdir(cpp_src_dir):
if f.endswith(".cpp"):
sources.append(os.path.join(cpp_src_dir, f))
Помните, что Stack Overflow — это библиотека вопросов и ответов, и чтобы вопрос был полезен в будущем, в нем ДОЛЖНО быть все необходимое для понимания вопроса. На ссылки рассчитывать нельзя, потому что они блокируются, гниют, а содержимое страницы может измениться. Это поставило вас в затруднительное положение, потому что по этим ссылкам, вероятно, слишком много контента, чтобы задать вопрос о переполнении стека. Обычно рекомендуется суммировать, но это сложно сделать с помощью кода. Для кода вам нужен минимально воспроизводимый пример .