virtualenv虚拟环境创建失败-pip多版本共存问题

本文记录了一位Flask初学者在创建虚拟环境时遇到的错误及解决过程。包括错误代码、网络连接失败等问题,并提供了详细的解决步骤,最终成功创建了虚拟环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flask初学者卡死在创建虚拟环境的起跑线上。气急败坏地找了n篇博客。

最终找到了一个大神的解决方案。点击打开链接

简单整理如下:

起初创建虚拟环境失败,错误代码如下:

Not overwriting existing python script /home/python/.virtualenvs/flask_py/bin/python (you must use /home/python/.virtualenvs/flask_py/bin/python3)
requests.packages.urllib3.exceptions.NewConnectionError: <requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f1d66475ac8>: Failed to establish a new connection: [Errno 101] 网络不可达
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
...Installing setuptools, pkg_resources, pip, wheel...done.
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 2363, in <module>
    main()
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 719, in main
    symlink=options.symlink)
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 988, in create_environment
    download=download,
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 918, in install_wheel
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 812, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command /home/python/venv/bin/python3.5 - setuptools pkg_resources pip wheel failed with error code 2
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
ImportError: No module named 'apport'
Original exception was:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 2363, in <module>
    main()
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 719, in main
    symlink=options.symlink)
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 988, in create_environment
    download=download,
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 918, in install_wheel
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
  File "/usr/lib/python3/dist-packages/virtualenv.py", line 812, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command /home/python/venv/bin/python3.5 - setuptools pkg_resources pip wheel failed with error code 2

多个pip版本共存与切换的问题

# 查看pip默认版本

pip -V
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)  # 如图python2的pip默认版本为9.0.1

接下来查看pip3是否可以正常使用

pip3 ——V
pip 8.1.2 from /usr/local/lib/python3.5/dist-packages (python 3.5)  # 如图python3的pip默认版本为8.1.2,系统会提示可升级

升级pip(如果是python2不能使用下面改成Python2)

sudo python3 -m pip install -U pip

如果没写sudo会提示报错:

PermissionError: [Errno 13] 权限不够: '/usr/local/bin/pip'

顺利安装完成后,查看能否正常运行

pip3 -V

再次创建虚拟环境

mkvirtualenv flask_py
Running virtualenv with interpreter /home/python/.virtualenvs/flask_py/bin/python2
Using real prefix '/usr'
New python executable in /home/python/.virtualenvs/flask2_py/bin/python2
Also creating executable in /home/python/.virtualenvs/flask2_py/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
virtualenvwrapper.user_scripts creating /home/python/.virtualenvs/flask2_py/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/python/.virtualenvs/flask2_py/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/python/.virtualenvs/flask2_py/bin/preactivate
virtualenvwrapper.user_scripts creating /home/python/.virtualenvs/flask2_py/bin/postactivate
virtualenvwrapper.user_scripts creating /home/python/.virtualenvs/flask2_py/bin/get_env_details

成功撒花!!!!!!!!!!








### 实现 Python 多版本共存并分别配置各自的 pip 为了在同一台机器上安装和管理多个 Python 版本及其对应的 `pip`,可以遵循以下策略: #### 下载与安装不同版本的 Python 可以从官方网站下载所需的各个版本的 Python 安装包,并按照默认设置完成安装过程。每种版本会自动创建独立的文件夹来存储其核心组件及相关工具。 对于 Windows 用户,在安装过程中可以选择将特定版本的 Python 添加到系统的 PATH 环境变量中,但这不是必需的操作;因为后续可以通过指定路径调用不同的解释器实例[^2]。 #### 修改 Python 可执行文件名 为了避免命令冲突,建议重命名各版本下的 python.exe 文件为带有版本号的形式,比如 python37.exe 和 python38.exe 等。这样可以在命令行界面通过这些自定义名称直接启动对应版本的解释器而不会引起混淆。 #### 配置系统环境变量 PATH 如果希望能够在任意位置运行某个具体版本的 Python 解释器,则需将其所在目录加入到系统的 PATH 环境变量里。注意只添加一次即可,即指向包含已更名后的 exe 文件的那个文件夹。此操作使得用户能在终端输入如 `python37 script.py` 来明确指明要使用的 Python 版本。 #### 使用虚拟环境隔离项目依赖关系 除了上述全局性的调整外,还可以利用 virtualenv 或者 venv 模块为每一个开发项目建立专属的工作空间。这不仅有助于保持不同项目的库之间互不干扰,而且也方便切换所基于的基础 Python 发行版。当激活了一个新的虚拟环境中时,默认情况下它会继承宿主操作系统上的相同大版本号(例如 Python 3.x),但是也可以手动指定其他可用的小版本作为基础构建该虚拟环境[^1]。 #### 明确指定 Pip 的使用方式 针对已经正确设置了的不同版本 Python,可以直接采用如下形式来进行软件包管理: ```bash path_to_pythonX.Y -m pip install package_name ``` 这里 X.Y 表示具体的次要版本编号,例如 C:\Python39\python.exe 对应于 Python 3.9 。这种方法能够确保每次都是由目标 Python 解释器自带的 pip 执行安装任务,从而有效防止跨版本污染问题的发生[^3]。 ```python import sys print(sys.version) ``` 以上代码可以帮助确认当前正在使用的 Python 版本信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值