Проблемы при компиляции и выполнении файла C, в который встроен Python в C

#python #c

#python #c

Вопрос:

У меня есть небольшой код на C, в котором я встроил код Python в C. По сути, идея состоит в том, чтобы выполнить функцию python из C и получить требуемый результат из функции Python в C. Я столкнулся со многими проблемами при компиляции, более конкретными ошибками компоновщика. Поэтому я должен вручную указать несколько путей и скомпилировать его, который выглядит так

сначала мне нужно сделать это,

  export LD_LIBRARY_PATH=/home/aipir/anaconda3/lib:$LD_LIBRARY_PATH
 

и затем

  export PYTHONPATH='/home/aipir/anaconda3/lib/python3.8'
 export PYTHONHOME='/home/aipir/anaconda3/lib/python3.8'
 

Затем скомпилируйте файл C, используя

 gcc -Wall -I/home/aipir/anaconda3/include/python3.8 main1.c -L/home/aipir/anaconda3/lib/ -lpython3.8
 

Мой код предназначен для вычисления суммы двух чисел путем передачи аргументов из файла C в модуль Python и получения результата обратно в файл C.
Ниже приведен код python:

 def add(a, b):
    return a b
 

Команда выполнения — это

 ./a.out cal add 23 45
 

Теперь проблема возникает, когда я пытаюсь импортировать библиотеки в Python

 import pandas
import numpy
 

Это приводит к ошибке

 ModuleNotFoundError: No module named 'pandas'
 

Я сделал и pip install pandas/numpy то, и conda install pandas/numpy другое, но все же я получаю ту же ошибку при выполнении из файла C Executable.
Но когда я запускаю интерпретатор Python в терминале, импорт работает без каких-либо ошибок.

Кроме того, это sys.path

 ['', '/home/aipir/anaconda3/lib/python3.8', '/home/aipir/anaconda3/lib/python3.8/lib/python38.zip', '/home/aipir/anaconda3/lib/python3.8/lib/python3.8', '/home/aipir/anaconda3/lib/python3.8/lib/python3.8/lib-dynload']
 

Пожалуйста, предложите решение для этого?
Спасибо,
Харшавардхан.

Ответ №1:

Это произойдет из-за множества версий Python, установленных в вашей ОС. Если вы хотите удалить некоторые версии Python из своего Linux, это сложно. Простое решение — сделать то же самое с Ubuntu 20.04 LTS. Потому что в нем есть только Python 3 и нет Python 2. Это должно сработать. Это сработало для меня.