conda,python pkgs 和 c++ 库
conda, python pkgs and c++ libs
据我所知,我相信conda对python pkgs所做的不超过
- 管理 python pkg 安装路径以及查找 python pkg 的路径。
~/miniconda/envs/$(env-name)/lib//$(python-version)/site-packages/...
- 在这些环境间独立路径中自动安装 python pkg 的依赖项
我相信:
- 如果你使用
~/miniconda/bin/pip
或conda install
安装python pkgs,所有的依赖都会被安装到~/miniconda/envs/<env-name>/lib/<python-version>
,~/miniconda/bin/python
可以找到它们
- 如果 python pkg pyfoo 依赖于
apt install
已经安装到 /usr/lib/<python-version>
的 c++ 库 libfoo,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 来管理不同环境中的 python pkg 并使用
apt
来管理 c++ pkg 而不必担心任何冲突吗?这意味着当我构建和 运行 一个混合(c++ 和 python)项目时,我只需要激活 conda env 和 conda install
所有 python 依赖项和 apt install
所有需要的 c++ 部门,一切都会正常吗?
你说的是对的:Conda几乎总是会带来自己的依赖。例外情况是 ,但我只知道 mpich
.
存在
否则,主要问题“我可以自带共享库吗?”的答案实际上是否。这是因为 Conda 包尽可能多地预编译,这通常会导致特定符号引用到动态库的确切构建。即使从不同的渠道获取动态库也会导致丢失符号的错误。
但是,您可以只使用 Conda 来管理 环境 并仍然使用 Pip 安装库。即使用 Conda 创建 Python 环境,然后使用 Pip 安装 Python 包。类似于:
conda create -n my-env python=3.9 pip
conda activate my-env
pip install pkg1 pkg2 ...
但是请注意,这会丢失 Conda 在幕后所做的所有 。这也意味着您的许多包仍将在本地编译,而 Conda 会预编译所有内容,这就是安装速度如此之快的原因。虽然更多的 Pip 包正在运行,但它们本质上是静态构建,这意味着更多不必要的重复应该是共享库。
据我所知,我相信conda对python pkgs所做的不超过
- 管理 python pkg 安装路径以及查找 python pkg 的路径。
~/miniconda/envs/$(env-name)/lib//$(python-version)/site-packages/...
- 在这些环境间独立路径中自动安装 python pkg 的依赖项
我相信:
- 如果你使用
~/miniconda/bin/pip
或conda install
安装python pkgs,所有的依赖都会被安装到~/miniconda/envs/<env-name>/lib/<python-version>
,~/miniconda/bin/python
可以找到它们 - 如果 python pkg pyfoo 依赖于
apt install
已经安装到/usr/lib/<python-version>
的 c++ 库 libfoo,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 来管理不同环境中的 python pkg 并使用
apt
来管理 c++ pkg 而不必担心任何冲突吗?这意味着当我构建和 运行 一个混合(c++ 和 python)项目时,我只需要激活 conda env 和conda install
所有 python 依赖项和apt install
所有需要的 c++ 部门,一切都会正常吗?
你说的是对的:Conda几乎总是会带来自己的依赖。例外情况是 mpich
.
否则,主要问题“我可以自带共享库吗?”的答案实际上是否。这是因为 Conda 包尽可能多地预编译,这通常会导致特定符号引用到动态库的确切构建。即使从不同的渠道获取动态库也会导致丢失符号的错误。
但是,您可以只使用 Conda 来管理 环境 并仍然使用 Pip 安装库。即使用 Conda 创建 Python 环境,然后使用 Pip 安装 Python 包。类似于:
conda create -n my-env python=3.9 pip
conda activate my-env
pip install pkg1 pkg2 ...
但是请注意,这会丢失 Conda 在幕后所做的所有