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?
下载最新的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)
| 归档时间: |
|
| 查看次数: |
7136 次 |
| 最近记录: |