警告:以“root”用户身份运行 pip 可能会导致权限被破坏
WARNING: Running pip as the ‘root’ user can result in broken permissions
使用该--root-user-action=ignore
选项忽略“以‘根’用户身份运行 pip 可能导致权限损坏”警告。
或者,您可以创建虚拟环境或pip install
使用该选项运行命令--user
。
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
当在没有添加用户的 Docker 容器中pip
安装包或在其中安装包时,通常会显示警告。sudo
使用--root-user-action
选项忽略警告
忽略警告的一种方法是使用
–root-user-action
选项。
pip install --upgrade pip pip install --root-user-action=ignore requests # 👇️ or with pip3 pip3 install --upgrade pip pip3 install --root-user-action=ignore requests
确保将requests
示例中的替换为您正在安装的包的名称。
该--root-user-action
选项从 pip v22.1 开始可用。
# 👇️ check pip version pip --version # 👇️ upgrade pip version pip install --upgrade pip pip3 install --upgrade pip
设置PIP_ROOT_USER_ACTION
环境变量
或者,您可以将PIP_ROOT_USER_ACTION
环境变量设置为
ignore
.
下面是如何在 Docker 文件中执行此操作的示例。
# 👇️ upgrade pip RUN pip install --upgrade pip ENV PIP_ROOT_USER_ACTION=ignore
下面介绍如何在 Linux、MacOS 和 Windows 上设置环境变量。
# Linux and MacOS export PIP_ROOT_USER_ACTION=ignore # Windows Command Prompt setx PIP_ROOT_USER_ACTION ignore # PowerShell $Env:PIP_ROOT_USER_ACTION="ignore"
确保根据您的操作系统和 shell 类型运行正确的命令。
如果不向Docker容器添加用户,则使用root用户
如果您不将用户添加到 docker 容器,则所有命令都以 root 身份运行。
您可以在运行命令之前添加用户,pip install
以消除使用 Docker 时的警告。
FROM python:3.10.10-alpine3.17 RUN pip install pip --upgrade RUN adduser -D newuser USER newuser WORKDIR /home/newuser COPY --chown=newuser:newuser requirements.txt requirements.txt RUN pip install --user -r requirements.txt ENV PATH="/home/newuser/.local/bin:${PATH}" COPY --chown=newuser:newuser . . CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
在运行命令之前,我们使用adduser
命令添加了一个新用户pip install
。
如果没有添加用户,所有命令都以 root 身份运行,这会导致问题。
使用--user
选项代替sudo
请注意,使用sudo pip install
不是一个好习惯。
使用 root 权限安装第三方包是危险的,应该避免。
一种替代方法是使用该--user
选项。
pip install requests --user pip3 install requests --user python -m pip install requests --user python3 -m pip install requests --user
该--user
选项将包安装在用户的主目录中。
如果您决定在 Docker 容器内使用此方法,请确保先添加用户。
您在未添加用户的容器中运行的任何命令都以 root 身份运行。
该--user
选项在虚拟环境中不起作用
但是,--user
如果您在虚拟环境中,该选项将不起作用。
最佳做法是创建一个虚拟环境并在其中安装包。
# 👇️ use correct version of Python when creating VENV python -m venv venv # 👇️ activate on Unix or MacOS source venv/bin/activate # 👇️ activate on Windows (cmd.exe) venv\Scripts\activate.bat # 👇️ activate on Windows (PowerShell) venv\Scripts\Activate.ps1 # 👇️ install the specific package in the virtual environment pip install requests
如果该python -m venv venv
命令不起作用,请尝试以下 2 个命令:
python3 -m venv venv
py -m venv venv
您的虚拟环境将使用用于创建它的 Python 版本。
确保根据您的操作系统和 shell 使用正确的命令来激活您的虚拟环境。
您的虚拟环境将使用用于创建它的 Python 版本。
sudo
,请尝试更改其权限或在不使用 的情况下重新创建它sudo
。sudo chmod -R 777 venv
上面的命令假定您的虚拟环境位于名为
venv
.
777
意味着授予所有用户对目录内容的完全访问权限。
创建一个虚拟环境并在其中安装包会有所帮助,因为虚拟环境是一个独立的 Python 安装。
您不会遇到权限问题,因为您没有在全球范围内安装任何软件包。
而是将软件包安装在lib
虚拟环境的文件夹中。
确保您的pip
,setuptools
和版本wheel
是最新的: