确保pip模块不存在,如何手动安装?

pau*_*l23 5 python pip synology python-venv python-3.8

为了避免出现 XY 问题:目标是在 Synology dsm 上创建虚拟环境,因此不需要 apt-get,其中 pip 是手动安装的。

我正在尝试在上述环境中创建一个虚拟环境(手动安装 pip 的 Synology dsm package python 3.8)。

但这会产生以下错误:

$ python3 -m venv new_venv
Error: Command '['/volume1/docker/builder/new_venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
Run Code Online (Sandbox Code Playgroud)

在发现该错误的过程中,我发现它venv工作得“很好”:

$ python3 -m venv --without-pip new_venv 
Run Code Online (Sandbox Code Playgroud)

按预期工作。pip 本身也按预期工作。但是我必须手动安装 pip。这也导致 Synology dsm 版本的 python 没有该模块ensurepip..

# python3 -c "import ensurepip; print(ensurepip.__file__);"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'ensurepip'
Run Code Online (Sandbox Code Playgroud)

这就产生了问题:如何手动安装ensurepip和/或pip在不依赖的情况下安装虚拟环境ensurepip

Emi*_*ter 4

在 venv 虚拟环境中安装 pip

下载最新的pip安装脚本并将文件命名为get-pip.py:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
Run Code Online (Sandbox Code Playgroud)

使用 Python 3 创建虚拟环境,但其中没有 pip(假设您位于/volume1/docker/builder/):

$ python3 -m venv --without-pip /volume1/docker/builder/new_venv
Run Code Online (Sandbox Code Playgroud)

激活虚拟环境:

$ source /volume1/docker/builder/new_venv/bin/activate
Run Code Online (Sandbox Code Playgroud)

您的提示现在应在括号中包含虚拟环境名称:

(new_venv) $
Run Code Online (Sandbox Code Playgroud)

该脚本将在激活的venv 虚拟环境中安装 pip:

(new_venv) $ python get-pip.py
# or
(new_venv) $ python3 get-pip.py
Run Code Online (Sandbox Code Playgroud)