如何在 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。
我是运行新职位的工作项目。
我相信虚拟环境是在其中创建的,正如我所见:
$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。