GCC不会使用安装在虚拟环境中的库进行编译

时间:2017-11-01 18:41:40

标签: python c opencv raspberry-pi cython

我在使用GCC工具链进行编译时遇到问题。我正在使用OpenCV进行面部检测程序,后来在Raspberry PI3等嵌入式Linux平台上工作,这就是我的工作方式:

首先,在运行Ubuntu的PC上:

在这台机器上,我安装了OpenCV 2.4,其中包含 NO 虚拟环境。

我使用OpenCV库和其他库(如NumPy等)在Python 2.7中开发了该软件。现在要优化我的代码我使用Cython将.py文件转换为.c然后我编译并将生成的.c文件链接到一个唯一的可执行文件。可执行文件工作正常并通过所有测试,我也获得了性能(快速响应)。

其次,在Raspberry PI 3上出现问题

在这里,我使用Python 2.7在一个名为(cv)的虚拟环境中安装了OpenCV 3.1.0。

然后我尝试将代码源移植到Raspberry PI后经过一些调整和一些小修改我得到我的Python文件.py工作,软件工作正常。现在的问题是,当我使用相同的方法编译使用Cython生成的.C文件时,编译失败,我想是因为OpenCV只安装在虚拟环境中,所以我给了GCC一个链接到VirtualEnv文件夹的路径,其中安装了OpenCV并且编译通过。但是可执行文件仍然给我一个错误,说导入cv2无法找到cv2包,即使所有这些步骤都是在激活(cv)虚拟环境的情况下完成的。

现在我有问题: - 有没有任何方法来概括虚拟环境中安装的内容,我的意思是在我的情况下,我需要OpenCV可以从Raspberry中的任何地方调用而无需登录到虚拟环境? - 可执行文件是否知道它们是在虚拟环境中启动的?我的意思是如果他们需要一个只安装在虚拟环境中的软件包,我怎么能让他们知道呢?

NB 我的方法基于这两篇文章:

1 个答案:

答案 0 :(得分:1)

要为所有进程激活virtualenv,需要设置以下环境变量。

VIRTUAL_ENV=<absolute path of virtual env directory>
PATH=<virtual env dir>/bin:$PATH

您可以在通常的位置(/etc/profile等)启动它们,以使所有进程默认使用虚拟环境。