为什么某些 pip 库需要提升访问权限,而它们的 conda 库则不需要?

时间:2020-12-27 13:43:03

标签: python pip conda

假设我在远程服务器的 conda 环境中,我没有提升的访问权限。

现在我想从pip安装一个库,我以librosa为例

pip install librosa

我收到错误

ERROR: Could not install packages due to an EnvironmentError: [Errno 1] Operation not permitted: 'ilike/trains/miniconda3/envs/mwe_regex_2/lib/python3.8/site-packages/_cffi_backend.cpython-38-x86_64-linux-gnu.so'

然后通常的解决方法是 pip install --user,它将在全局级别安装库,这不是那么可取。然而,让我想到的是:

conda install -c conda-forge librosa

这是安装时没有任何故障。然后我意识到这是有道理的,因为 conda 可能只是下载了 cffi 二进制文件的静态构建。但是对于像 pyasn1 这样的库,我得到了类似的错误

ERROR: Could not install packages due to an EnvironmentError: [Errno 1] Operation not permitted: '/tudelft.net/staff-bulk/ewi/insy/SpeechLab/bhalpern/miniconda3/envs/espnet_env_conda/lib/python3.8/site-packages/pyasn1-0.4.8.dist-info/INSTALLERidmrvd4t.tmp'

这似乎会随着重复安装而消失。

所以我的问题是

  • 如果我无法从 conda 安装库(因为它不在 conda 中)。并且 pip 版本需要二进制文件,是我使用 pip install --user 的唯一选择吗?
  • 这些 TMP 是什么?为什么它们需要提升访问权限?为什么他们会通过重复的 pip 安装而消失?

1 个答案:

答案 0 :(得分:1)

conda 在“用户”空间做所有事情,比如你的主目录(就像 pip --user),而 pip(没有虚拟环境)默认在“系统”空间做事情.

<块引用>

如果我无法从 conda 安装库(因为它不在 conda 中)。并且 pip 版本需要二进制文件,是我使用 pip install --user 的唯一选择吗?

一种选择是使用 conda skeleton 之类的工具将 PyPI 包迁移到 conda。但除此之外,pip 将软件包安装到 conda 环境中会将其放入该环境中,该环境再次位于用户空间中。 (确保您使用的是 conda 提供的 pip,例如 /path/to/miniconda3/envs/myenv/bin/pip,而不是全局 pip,这可能会在它之外安装东西,违背目的)。

相关问题