.so 文件的库和包含目录变量是啥?

Posted

技术标签:

【中文标题】.so 文件的库和包含目录变量是啥?【英文标题】:What are library and include directory variables for .so files?.so 文件的库和包含目录变量是什么? 【发布时间】:2019-04-01 13:55:55 【问题描述】:

我有一个关于 opencv 的基本问题。我正在使用 conda 环境并使用 conda 命令安装了 opencv 3。我可以在 /anaconda2/envs/MyPy2.7TF/lib/python2.7/site-packages 中看到 cv2.so。现在,我正在尝试使用来自 https://bitbucket.org/amitibo/pyfacetracker 的 pyFaceTracker。有一个名为 setup.py 的文件需要我修改“OPENCV_BASE”、“OPENCV_LIB_DIRS”、“OPENCV_INCLUDE_DIRS”等。我只能看到 .so 文件。我应该为这些变量赋予什么价值?

【问题讨论】:

您不需要修改setup.py 中的任何内容。您只需要按照docs 执行python setup.py 文档说“您首先需要更新 setup.py 以指向 OpenCV 的安装(即将 OPENCV_BASE、OPENCV_LIB_DIRS 和 OPENCV_VERSION 全局变量设置为正确的值)。” 【参考方案1】:

您可以从 python shell 中获取 'OPENCV_BASE'、'OPENCV_LIB_DIRS'、'OPENCV_INCLUDE_DIRS' 的路径。 只需激活 conda 环境,启动 python shell 并使用以下代码:

import cv2
print(cv2.getBuildInformation())

这段代码会打印出opencv的安装细节,在这里你可以得到这个所需变量的路径。

【讨论】:

感谢这个功能。我会试试这个。【参考方案2】:

如果你在anaconda中寻找opencv的安装路径,可以使用CONDA_PREFIX环境变量:

import os

conda_dir = os.environ.get("CONDA_PREFIX")
# Build your path
opencv_install = os.path.join(conda_dir, 'lib', 'python2.7', 'site-packages', 'cv2')

我不完全确定 lib_dirs 是什么,但您可以使用 __version__ 属性获取任何包的版本:

import cv2

cv2.__version__
# '4.0.0'

【讨论】:

您好,感谢您抽出宝贵时间回答我的问题。但是,我没有“opencv_install”(“/home/vandana/anaconda2/envs/MyPy2.7TF/lib/python2.7/site-packages/cv2”)给出的文件夹。我只有到'site_packages',之后我有一个cv2.so 文件。所以,我的问题是 - 只有这个 .so 静态库文件,我应该如何提供 setup.py 所需的路径名? 这需要不同的opencv 安装吗?阅读他们的文档,看起来您可能需要在 Ubuntu 上使用 apt 或在 mac 上使用 brew 之类的东西安装 opencv,该库指向 首先我想尝试使用我现有的 anaconda-opencv 而不进行任何其他 opencv 安装。我想那里有点懒:P 我尝试使用brew install opencv,它可能会被认为是无穷无尽的依赖,所以我不怪你 @VandanaRajan 我肯定会说,任何需要您编辑 setup.py 的库的质量都值得怀疑,至少从使用/扩展代码的最佳实践的角度来看是这样

以上是关于.so 文件的库和包含目录变量是啥?的主要内容,如果未能解决你的问题,请参考以下文章

当我有自定义的 ld-<me>.so.conf 时,ldconfig 也包括默认路径中的库

x86的库和arm的.o文件能链接吗

动态库和主程序中的静态类变量[重复]

vs2015 引用lib库和dll

以任何方式将一批库和目录路径包含在“包含其他目录”Visual C ++中

如何检查linux上安装lib是不是齐全