Debian/Ubuntu 系统 python 中 Ensurepip 被禁用

Debian/Ubuntu 系统 python 中 Ensurepip 被禁用

我正在尝试为我的 Django 应用程序的开发创建一个虚拟环境。我正在使用的突击队:

vagrant@vagrant:/var/www/djangogirls$ python3 -m venv myvenv
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: ['/var/www/djangogirls/myvenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']


vagrant@vagrant:/var/www/djangogirls$ sudo apt-get install python3-venv
Reading package lists... Done
Building dependency tree       
Reading state information... Done
python3-venv is already the newest version (3.5.1-3).
The following packages were automatically installed and are no longer required:
  javascript-common libjs-jquery libjs-sphinxdoc libjs-underscore python-pbr python-pkg-resources
  python-six python-stevedore python3-virtualenv virtualenv virtualenv-clone
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 108 not upgraded.

vagrant@vagrant:/var/www/djangogirls$ python3 -m ensurepip
ensurepip is disabled in Debian/Ubuntu for the system python.

Python modules for the system python are usually handled by dpkg and apt-get.

    apt-get install python-<module name>

Install the python-pip package to use pip itself.  Using pip together
with the system python might have unexpected results for any system installed
module, so use it on your own risk, or make sure to only use it in virtual
environments.


vagrant@vagrant:/var/www/djangogirls$ rm -r myvenv/ 

vagrant@vagrant:/var/www/djangogirls$ python3 -m venv myvenv
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: ['/var/www/djangogirls/myvenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']

如您所见,我正在尝试创建一个 myvenv,但由于缺少 python3-venv,因此无法创建。我已经安装了它,但缺少 Ensure pip。搜索后发现系统(Ubuntu 16.04)不鼓励使用该软件包。有人能帮我解决这个问题吗?

答案1

有一个相关的错误报告这里

确保pipUbuntu 上缺少或禁用该组件

解决方法是创建一个不使用 pip 的虚拟环境

python3 -m venv myvenv --without-pip

确保pip在这种情况下,不会调用组件并且会创建一个新的环境。

但是在虚拟环境中缺少 pip 可能会是一个问题。

一种解决方案是安装系统 pip3 包并直接在虚拟环境中使用系统 pip 模块。

虚拟环境必须能够访问系统站点包才能使用系统 pip 模块。

  1. 安装系统 python3 pip 包

    sudo apt-get install python3-pip
    
  2. 创建无需 pip 且可以访问系统站点包的虚拟环境

    python3 -m venv myvenv --without-pip --system-site-packages
    

您现在可以使用系统 pip 模块将 python 包安装到您的虚拟环境中。

pip install Django你必须使用明确的

myvenv/bin/python3 -m pip install Django

或者你可以先激活你的虚拟环境

source myvenv/bin/activate
python3 -m pip install Django

python3 -m pip --version可以方便地查看使用了哪个 python 环境。

根据找到的解决方案这里,但不要python get-pip.py在虚拟环境中使用建议,因为它会窃取系统pip命令

答案2

我遇到了同样的问题,python3-venv按照说明进行安装无法解决ensurepip不可用问题!但是,由于我的 python3 版本是3.7.5 installingpython3.7-venv`,因此解决了我的问题。

答案3

截至 2023 年仍然遇到这个问题 - ubuntu/apt 上的默认 python 安装没有为您提供您期望从 python 安装中获得的所有“开箱即用”工具,例如 pip、venv 等。

修复了:

sudo apt-add-repository ppa:deadsnakes/ppa
apt-cache search python3.10
sudo apt install python3.10-full

答案4

我遇到了同样的问题并尝试运行错误中显示的命令

./venv/bin/python -Im ensurepip --upgrade --default-pip

你可能会看到这样的输出

Traceback (most recent call last):
  File "/usr/lib/python3.5/runpy.py", line 184, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/lib/python3.5/ensurepip/__main__.py", line 4, in <module>
    ensurepip._main()
  File "/usr/lib/python3.5/ensurepip/__init__.py", line 268, in _main
    default_pip=args.default_pip,
  File "/usr/lib/python3.5/ensurepip/__init__.py", line 174, in bootstrap
    _run_pip(args + _PROJECTS, additional_paths)
  File "/usr/lib/python3.5/ensurepip/__init__.py", line 67, in _run_pip
    pip.main(args)
  File "/tmp/tmp_yqoc6jf/pip-8.1.1-py2.py3-none-any.whl/pip/__init__.py", line 215, in main
  File "/usr/lib/python3.5/locale.py", line 594, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

注意这一行locale.Error: unsupported locale setting意味着你忘记设置了locate。所以解决办法是:

export LC_ALL=C
python3 -m venv venv

然后您就可以出发了。

相关内容