#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. Это должно сработать. Это сработало для меня.