当我在 shell 中输入 python 时如何控制哪个命令

当我在 shell 中输入 python 时如何控制哪个命令

我使用 anaconda 作为处理虚拟环境的方法。这意味着我安装了多个版本的 python。当我从 shell 运行 python 时,我遇到了错误的 python 版本启动的情况。

跑步

Which python
/anaconda3/envs/dash-two/bin/python
type -a python
 python is /anaconda3/envs/dash-two/bin/python
 python is /usr/bin/python

受此启发邮政我尝试过 hash -t python 并查看了 alias 的输出

答案1

您似乎想使用虚拟环境,但尚未激活。为此(假设您安装了基本的 venv 东西 - 对于 python3 效果更好)

$ mkdir pytry
$ python3 -m virtualenv pytry

现在您应该在pytry. cd 进入pytry,你应该看到例如

$ ls
bin  include  lib  local  share
$ 

现在运行

source bin/activate

注意从虚拟环境目录运行上面(在我们的例子中pytry

现在你应该发现你的提示应该已经从(比如说)更改$(pytry) $

which python会告诉你你的 python 可执行文件

如果您想要不同的可执行文件,那么在创建 venv 时您需要运行而不是

python3 -m virtualenv pytry

python3 -m virtualenv -p other_python_executable pytry

一般来说,这会显示帮助

$ python3 -m virtualenv -h

答案2

这是在“PATH”环境变量中控制的。

PATH 是一个目录列表,用于搜索您键入的命令。它是一个由冒号分隔的单个字符串。例如:我放置在主目录 ( /home/philip/bin) 中的任何内容都将被使用,而不是 中的任何内容,/usr/bin/因为我的 PATH 设置为:

echo $PATH
/home/philip/bin:/usr/local/bin:/usr/bin:/bin:/usr/games

要临时更改路径,您可以使用“导出”进行设置。例如:

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/philip/bin

要永久设置此功能,您需要在您的个人资料中进行设置。这可以通过将类似于上面的一行(带有重新排序的路径)放入主目录中名为.profile.如果它不存在,只需创建它并添加该行。

答案3

看起来 Anaconda 正在踩踏你的 PATH(即将它自己的 python 解释器的路径提升到默认系统解释器的路径前面)。有几种方法可以解决这个问题:

  1. 使用正确版本的 python 创建 Anaconda 实例:

    conda create -n myenv python=3.4
    
  2. 加载 anaconda 实例后,覆盖 PATH 环境变量。

    export PATH=/usr/bin:$PATH
    
  3. 或者将首选路径放在脚本文件的第一行,将文件设置为可执行文件并将其作为 shell 脚本运行。脚本的第一行看起来像这样:

    #!/usr/bin/python
    

    您可以使用“chmod”命令设置文件可执行文件:

    > chmod 700 file.py
    

    然后从命令行运行:

    > file.py
    

相关内容