【问题标题】:How to determine if multiple python binaries point to same installation如何确定多个 python 二进制文件是否指向相同的安装
【发布时间】:2018-02-17 06:30:26
【问题描述】:

我创建了一个用于 django 的 virtualenv,由于某种原因,它包含三个不同的 python 二进制文件,即 python、python3 和 python3.6。当我为每一个运行--version 时,我得到:

(django) usrname $ python --version
Python 3.6.2
(django) usrname $ python3 --version
Python 3.6.2
(django) usrname $ python3.6 --version
Python 3.6.2

问题一:

这三个二进制文件是否意味着我在这个 virtualenv 中安装了三个不同的 python 版本?

问题 2:

如何删除多余的安装/二进制文件?

编辑:这是ls -l 为每次安装返回的内容。

(django) Sahands-MacBook-Pro:django sahandzarrinkoub$ ls -l /Users/sahandzarrinkoub/.local/share/virtualenvs/django/bin/python3.6
-rwxr-xr-x  1 sahandzarrinkoub  staff  13068 Sep  8 11:25 /Users/sahandzarrinkoub/.local/share/virtualenvs/django/bin/python3.6
(django) Sahands-MacBook-Pro:django sahandzarrinkoub$ ls -l /Users/sahandzarrinkoub/.local/share/virtualenvs/django/bin/python3
lrwxr-xr-x  1 sahandzarrinkoub  staff  9 Sep  8 11:25 /Users/sahandzarrinkoub/.local/share/virtualenvs/django/bin/python3 -> python3.6
(django) Sahands-MacBook-Pro:django sahandzarrinkoub$ ls -l /Users/sahandzarrinkoub/.local/share/virtualenvs/django/bin/python
lrwxr-xr-x  1 sahandzarrinkoub  staff  9 Sep  8 11:25 /Users/sahandzarrinkoub/.local/share/virtualenvs/django/bin/python -> python3.6

【问题讨论】:

  • 你只安装了一个python解释器,它有3个链接可以访问它
  • 怎么知道?
  • cd 到虚拟环境的bin目录,运行ls -l。您将看到 python 和 python3 只是指向 python3.6 的符号链接。因此,只有一个 python 安装。

标签: python bash python-3.x macos


【解决方案1】:

在'/usr/bin/python'目录下运行'ls -l'命令,会显示是否为符号链接

ekavala@elx75030xhv:~$ ll /usr/bin/python*
lrwxrwxrwx 1 root root       9 Dec 21  2013 /usr/bin/python -> python2.7*
lrwxrwxrwx 1 root root       9 Dec 21  2013 /usr/bin/python2 -> python2.7*
-rwxr-xr-x 1 root root 3341384 Oct 26  2016 /usr/bin/python2.7*

在这里我们可以看到两个链接实际上都指向python2.7* 解释器

ekavala@elx75030xhv:~$ python --version
Python 2.7.6
ekavala@elx75030xhv:~$ python2 --version
Python 2.7.6
ekavala@elx75030xhv:~$ python2.7 --version
Python 2.7.6

【讨论】:

  • 你可以用'ls -l'代替ll
  • ll 不是命令;它是ls -l 的一个通常定义的(但绝不是通用的)别名。
【解决方案2】:

乍一看,我会说您的虚拟环境不活跃。如果是,那么虚拟环境的名称将在 $ 提示符之前的括号中。例如,如果我创建一个名为 testenv 的 virtualenv 并激活它,我的提示将如下所示:

(testenv)  lenovo:davidj>

如果没有激活它会是这样的:

lenovo:davidj>

确保激活虚拟环境。

【讨论】:

  • 已编辑答案以阐明它已被激活。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
  • 1970-01-01
  • 2011-03-27
相关资源
最近更新 更多