ubuntu - conda、python pkgs 和 c++ 库

标签 ubuntu conda

据我所知,我相信 conda 对 python pkgs 所做的不超过

  • 管理 python pkg 安装路径以及查找 python pkgs 的路径。 ~/miniconda/envs/$(env-name)/lib//$(python-version)/site-packages/...
  • 在这些环境间单独的路径中自动安装 python pkgs 的依赖项

  • 我相信:
  • 如果您使用 ~/miniconda/bin/pipconda install要安装 python pkgs,所有依赖项都将安装到 ~/miniconda/envs/<env-name>/lib/<python-version> , 和 ~/miniconda/bin/python可以找到他们
  • 如果 python pkg pyfoo 依赖于 apt install 已经安装的 c++ 库 libfoo进入 /usr/lib/<python-version> , conda install pyfoo将重新安装 libfoo 到 ~/miniconda/envs/<env-name>/lib/<python-version>
  • 如果您使用 apt要安装 python pkgs,安装路径将是 /usr/lib/<python-version> conda 找不到它们。

  • 我的问题是:
  • 我对吗?
  • 是否 apt install c++ 库与安装到 ~/miniconda/envs/<env-name>/lib/<python-version> 中的任何 c++ 库冲突反之亦然?
  • 我可以只使用 conda 来管理不同环境和 apt 中的 python pkgs吗?在不担心任何冲突的情况下管理 c++ pkgs?这意味着当我构建和运行一个 hybird(c++ 和 python)项目时,我只需要激活 conda env 和 conda install所有 python 依赖项和apt install所有需要的 c++ 部门,一切都会正常工作吗?
  • 最佳答案

    您说的是正确的:Conda 几乎总是会带来自己的依赖项。异常(exception)情况是 using a shell package ,但我只知道它存在于 mpich .
    否则,主要问题“我可以自带共享库吗?”的答案实际上是 。没有 .这是因为 Conda 包尽可能多地预编译,这通常会导致对动态库的确切构建的特定符号引用。即使从不同的 channel 获取动态库也可能导致丢失符号的错误。
    但是,您可以只使用 Conda 来管理环境,而仍然使用 Pip 来安装库。即使用 Conda 创建 Python 环境,然后使用 Pip 安装 Python 包。就像是:

    conda create -n my-env python=3.9 pip
    conda activate my-env
    pip install pkg1 pkg2 ...
    
    但是请注意,这会丢失所有 the redundancy reduction conda 在引擎盖下所做的。这也意味着您的许多包仍将在本地编译,而 Conda 会预编译所有内容,这就是安装速度如此之快的原因。虽然更多的 Pip 包在轮子上,但它们本质上是静态构建,这意味着对应该共享库的内容进行了更多不必要的重复。

    关于ubuntu - conda、python pkgs 和 c++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70393944/

    相关文章:

    Python 脚本 - 在本地环境中工作但不在开发服务器上工作

    python - PIL 库 Image.fromarray() 导致 AttributeError : 'tuple' object has no attribute '__array_interface__'

    python - anaconda 中使用的 python 的 Gcc 版本

    python-3.x - 将 anaconda 虚拟环境更新为特定的 python 版本

    ruby-on-rails - 尝试运行命令 : bundle install --without production 时出现错误消息

    linux - 如何同时运行多个 Go lang http 服务器并使用命令行测试它们?

    c++ - 如何使用 CMake 链接到 Capstone?

    anaconda - 如何在没有 pip 的情况下将包添加到 conda 环境中

    python - 相当于 apt-get install python3.6-dev for conda

    python - 无法使用 Conda 运行 Python 脚本