如何在 conda 虚拟环境中指定 python 版本

How to specify python version in a conda virtual env

我是运行新职位的工作项目。

我相信虚拟环境是在其中创建的,正如我所见:

$head bm3.py
#!/usr/bin/env /opt/bm3_venv/bin/python3

bm3_venv 是用 requirements.txt 创建的环境名称(使用 virtualenv?) $ ls -la /usr/bin/env -rwxr-xr-x。 1 根根 28992 2016 年 6 月 30 日 /usr/bin/env

bm3.py 大概在整个项目中使用 python3,不仅从上面的 bm3.py 中的第一行,而且在其他一些 python 脚本中也看到使用print('asdf') 这是一个 python3 语法。

但是我确实在项目中看到 python2 语法打印 'asdf',即

/data/cloudera/parcels/CDH-5.12.0-1.cdh5.12.0.p0.29/bin/../lib/impala-shell/impala_shell.py是在执行bm3.py的时候用的,impala-shell.py是用python2语法写的

也就是说,在当前工作项目中,当运行 bm3.py时,它使用python3,但在相同的运行 python2是也以某种方式使用。

怎么会这样?

顺便说一句,CDH-5.12.0-1.cdh5.12.0.p0.29的包裹impala-shell.py的原版在哪里下载?

非常感谢。

更新:

现有环境下bm3.py的第一行是:

/usr/bin/env /opt/al2_venv/bin/python3

这指定在此bm3.py

中使用python3

在impala-shell.py中使用现有环境第一行是:

/usr/bin/env /usr/bin/env python

这指定在此impala-shell.py

中使用python2

现在,问题变成了 /usr/bin/env 在这里如何工作?

如果我在现有环境中运行它,我会得到如下的变量设置列表:

> XDG_SESSION_ID=224064 SELINUX_ROLE_REQUESTED= TERM=xterm
> SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=192.168.103.81 50182 22
> PATH=/usr/lib64/qt-3.3/bin:/home/xxxx/perl5/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/tableau/tabcmd/bin:/home/rxie/.local/bin:/home/rxie/bin
> PWD=/home/xxxx JAVA_HOME=/usr/java/latest LANG=en_US.UTF-8
> KDEDIRS=/usr SELINUX_LEVEL_REQUESTED= HISTCONTROL=ignoredups
> KRB5CCNAME=FILE:/tmp/krb5cc_1377008653_sw88z6 SHLVL=1 HOME=/home/xxxx
> PERL_LOCAL_LIB_ROOT=:/home/xxxx/perl5 LOGNAME=xxxx
> QTLIB=/usr/lib64/qt-3.3/lib SSH_CONNECTION=192.168.103.81 50182
> 192.168.101.231 22 LESSOPEN=||/usr/bin/lesspipe.sh %s XDG_RUNTIME_DIR=/run/user/1377008653
> QT_PLUGIN_PATH=/usr/lib64/kde4/plugins:/usr/lib/kde4/plugins
> PERL_MM_OPT=INSTALL_BASE=/home/rxie/perl5
> _=/usr/bin/env

这个环境有什么用,我该如何使用它?谢谢。

我认为你是 运行 python 2,你可以在 Bash 中使用 python -V 来验证,现在怎么可能使用 python3 print()在代码的第一行使用 from __future__ import print_function,从 python 2.6+ ports/makes 可以实现 python3 到 python2.[=14 的打印功能=]

我想我现在有了答案:

我相信这是设计使然 python 允许任何 python 脚本(尽管它的 python 语法)可以在脚本的第一行以 [=15 开头指定解释器的版本=]#! 喜欢 #!/usr/bin/env /opt/bm3_venv/bin/python3 in bm3.py,意思是整个脚本写在python 3;同时,当在作业运行中使用impala-shell.py时,impala-shell.py中的第一行指定了python解释器- 这是 python 2.6.6 - Cloudera 的 CDH 中内置了 python。