【问题标题】:How can I create a python virtual environment that only includes one version of python/pip?如何创建仅包含一个版本的 python/pip 的 python 虚拟环境?
【发布时间】:2020-05-28 04:41:31
【问题描述】:

我的印象是,如果我创建一个具有特定 python 版本的 python 环境,它将只使用那个版本,但我似乎弄错了:

$ /usr/bin/python3 -m venv pyenv
$ ls pyenv
$ ls pyenv/bin
activate      activate.fish  easy_install      pip   pip3.8  python3
activate.csh  Activate.ps1   easy_install-3.8  pip3  python

有什么理由让我的 venv 中的旧版本的 python 需要与当前版本并存?我可以指定不这样做,还是应该手动删除 python2/pip?

【问题讨论】:

  • 我在那里没有看到任何 Python 2。你假设python 是 Python 2 吗?
  • 是的,我是,但我看到它是一个链接。但是为什么有 3 个点呢?

标签: python python-3.x python-venv


【解决方案1】:

在您的虚拟环境中,所有python* 可执行文件都将指向相同的版本。您可以从符号链接中看到这一点:

$ /usr/bin/python3 -m venv pyenv

$ cd pyenv/bin

$ ls -l python*
lrwxrwxrwx 1 [user] [group]  7 May 28 05:49 python -> python3
lrwxrwxrwx 1 [user] [group] 16 May 28 05:49 python3 -> /usr/bin/python3

同样,所有pip 可执行文件都将是同一文件的副本:

$ ls -l pip*
-rwxr-xr-x 1 [user] [group] 212 May 28 05:49 pip
-rwxr-xr-x 1 [user] [group] 212 May 28 05:49 pip3
-rwxr-xr-x 1 [user] [group] 212 May 28 05:49 pip3.6

$ diff3 pip*
[no output]

这意味着,例如,一旦您运行了activate 脚本以使此bin 目录位于您的PATH 中,无论您是否键入@,您都将在您的虚拟环境中找到python 987654329@或python3

例如,您使用#!/usr/bin/env python#!/usr/bin/env python3 调用的python 脚本也是如此。

只有当您显式调用不同版本的 python(例如 python2)或提供 python 可执行文件的完整路径(例如 /usr/bin/python)时,您才能在系统的其他位置找到另一个版本。

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 2020-09-03
    • 2021-12-10
    • 1970-01-01
    • 2023-02-22
    • 2021-04-02
    • 2017-12-30
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多