假设我在远程服务器的 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'
这似乎会随着重复安装而消失。
所以我的问题是
答案 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
,这可能会在它之外安装东西,违背目的)。