使用conda隔离编译环境

  参考资料:

  https://docs.conda.io/projects/conda-build/en/stable/resources/compiler-tools.html

  随着不断地发展,Anaconda/miniconda早已不是一个单纯For Python的包管理器了,它已经提供了支持跨平台、跨语言的环境支持。

  今天我在尝试修改一个用C语言开发的包的时候发现编译会报错,根据报错信息发现是c++这个可执行文件出了问题,于是尝试用conda构建一个干净的Python环境,单纯地进行C语言的编译。参考资料给出了一个非常明白的指引教程,首先使用conda安装编译需要的软件(编译器)。

复制代码
conda install gxx_linux-64

  随后在conda虚拟环境根目录的/bin文件夹下就可以找到这些新下载下来的编译器:

  你可能会惊奇地发现,你下载下来的gcc,g++等文件都被加上了奇怪的前缀,这个我理解是Anaconda的兼容性考虑。参考资料也给出了相应的解释:

  理解一下,由于前缀的存在gcc这些编译器都是没法直接调用的。但是conda在activate的时候会配置一些环境变量,使得make,cmake这些软件能够找到正确的编译器(这对大部分的开发情况都够用了)。检查一下安装之后是否能够正常运行cmake:

  没任何问题,但是仍然报错缺少了libavcodec这些东西,但是ffmpeg是可以找到的。问GPT找到了答案,原因是Linux在发行的时候会区分开发包和运行时,普通的用户显然只需要运行时即可(如.so),但是开发者会需要头文件等等来帮助编译。此外,由于conda默认使用者是开发者或者数据科学家,因此默认会安装dev的套件。所以conda install ffmpeg就满足我们的需求,会给我们安装全家桶。试一试:

复制代码
conda install ffmpeg=4 -c conda-forge

  再运行cmake:

  所有的lib,编译器和ffmpeg都被正确找到了~ 大功告成,运行最终的make命令,把.so文件编译出来,只报了一个warning。看着进度条填满还是比较解压的:

  需要注意的是,如果你的虚拟环境只负责编译(如编译出一个.so文件),那么在安装Python相关的bind的时候,一般还需要switch到相应的环境中去,运行setup.py,或者pip install . -e这样的命令。这样才算完成全部的安装环节。

相关推荐
Blockbuater_drug2 天前
OpenMM分子动力学模拟02 安装:Linux:conda 一条命令装通 GPU 加速的分子模拟环境
linux·conda·cuda·gpu驱动·pythonpath·openmm安装
SoulRoar.5 天前
WSL2 + Conda 环境下MinerU 4.x GPU 服务部署与 systemd 常驻指南
conda·wsl·文档解析·mineru
benjiangliu17 天前
恩培趣味计算机视觉-01-conda环境和Python库
开发语言·python·conda
weixin_4617694021 天前
conda create 创建容器 Failed to resolve ‘repo.anaconda.com‘问题
开发语言·python·conda·repo·网络问题·无法创建
饭来_25 天前
Ubuntu 中出现 CondaToSNonInteractiveError 的解决方法
ubuntu·conda·debug
emo_2b1 个月前
Pycharm配置conda解释器时遇到的问题及解决方法
linux·pycharm·conda
Είναι η κοπέλα1 个月前
llama.cpp 与 GGUF 格式:本地大模型的“裸引擎“
开发语言·人工智能·pytorch·python·conda
Είναι η κοπέλα1 个月前
显存计算与模型选择:你的显卡能跑多大的模型
人工智能·pytorch·python·开源·conda
天蓝蓝的本我1 个月前
conda日常用到的命令积累1-登录linux,安装pycharm
linux·pycharm·conda
Είναι η κοπέλα1 个月前
Python 虚拟环境:venv、conda 与 Python 版本选择全解
开发语言·python·conda