python - 编译和执行在 C 中嵌入了 Python 的 C 文件时出现问题
问题描述
我有一个小的 C 代码,其中我将 Python 代码嵌入到 C 中。基本上,这个想法是从 C 执行一个 python 函数,并从 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 File Execuable 执行时仍然遇到相同的错误。但是当我在终端中从 Python Interpreter 运行时,导入工作没有任何错误。
这也是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']
请为此提出解决方案?谢谢,哈沙瓦丹。
解决方案
由于您的操作系统中安装了许多 Python 版本,因此会发生这种情况。如果你想从你的 Linux 中删除一些 Python 版本是很困难的。简单的解决方案是对 Ubuntu 20.04 LTS 执行相同的操作。因为它只有 Python 3 而没有 Python 2。这应该可以。它对我有用。
推荐阅读
- c# - 如何向上移动 ui 文本?
- javascript - 让两个过滤表下拉列表同时工作
- typescript - 有条件申请?每个属性的映射类型中的修饰符
- python - 如何在 python 中替换均值而不是缺失值
- javascript - 这段代码中的选择数组发生了什么?
- reactjs - 从外部 json 文件中获取数据并在 reactjs 应用程序中将其设置为全局
- azure - Azure 逻辑应用程序中的 Azure Function Produce 404
- html - 如何仅使用 css 在 reactjs 中的两个 div 列之间居中此 div
- python - 使用 Flask Heroku 更新 prod postgresql db
- flutter - 无法加载图片资源