gpt4 book ai didi

python - 如何在没有root权限的情况下在conda中安装pip包?

转载 作者:行者123 更新时间:2023-12-05 06:58:05 27 4
gpt4 key购买 nike

这将是一个有风险的问题,因为对于已经回答过的类似问题,有许多看似简单的解决方案,但在我遇到的特定情况下,这使得它们无法理想地工作。

没有 pip 的标准 conda 工作流程

使用环境文件安装 conda 环境的标准工作流程是

conda env create -f environment.yml

如果您对安装 Miniconda 的文件夹有适当的权限,即使没有 root 权限也能正常工作。

使用 pip 的标准 conda 工作流程

environment.yml 可以包含 pip 包。这是通过将包从 environment.yml 解析为 requirements.txt 文件,然后执行带有更新和需求标志 (more detail here) 的 pip 子进程来实现的。

这在大多数情况下都可以正常工作,conda 的 pip 安装相关包。但是,如果您缺少所需的权限,这可能会很麻烦,即如果您在环境中运行 pip install package_name:

File "/secret_path_to_conda/miniconda3/envs/cheese/lib/python3.6/site-packages/pip/_internal/utils/unpacking.py", line 105, in set_extracted_file_to_default_mode_plus_executable
os.chmod(path, (0o777 & ~current_umask() | 0o111))

因为需要对路径进行 777 访问,这在我的情况下对正确的文件夹不可用。

临时解决方案

对我有用的是两步程序:

  1. 从 environment.yml 中手动删除 pip 文件并将它们放入 requirements.txt
  2. 执行 pip install --user requirements.txt

这会将 pip 二进制文件安装到一个地方 (~/.local/bin),我可以在其中获得所需的访问权限并且可以正常工作。它自然可以遵循,为什么我不把我的整个 Miniconda 安装在那个地方,这意味着我不会有访问问题。这个解决方案已经出现在我身上,但是,问题是我在该空间中被限制为 8GB 的​​空间。对于我的多个项目的所有 conda 依赖项,这还不够。

我想要什么?

理想情况下,一些可以替代的其他命令

conda env create -f environment.yml

通过内部调用 pip install --user 而不是普通的 pip install。

类似问题与类似问题的区别

  • this - 从那时起,conda 的行为发生了变化,这不是访问权限的问题
  • this - 仅指 pip 而不是 conda

最佳答案

如果我能正确理解你的问题。不允许在默认用户目录中安装软件包,因为其中空间不足。

那么在使用pip时如何更改安装目录呢?

我以前没有用过这个参数,但是pip install --help告诉我们

-t, --target <dir>          Install packages into <dir>. By default this will not replace existing files/folders in <dir>. Use --upgrade to replace
--root <dir> Install everything relative to this alternate root directory.
--prefix <dir> Installation prefix where lib, bin and other top-level folders are placed
--user Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on Windows. (See the
Python documentation for site.USER_BASE for full details.)

所以这里有很多参数来自定义安装路径。也许在使用 pip 时手动选择您的环境路径将是解决方案?
您也可以尝试更改 USER_BASE路径

关于python - 如何在没有root权限的情况下在conda中安装pip包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64723008/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com