Среда Conda python = 2 использует Python 3 - PullRequest
0 голосов
/ 04 декабря 2018

Я установил Miniconda3 (Python 3 по умолчанию) и использовал conda для создания виртуальной среды Python 2:

~$ conda create -n myenv python=2
...
~$ source activate myenv
(myenv) ~$ conda list
# packages in environment at ~/miniconda3/envs/myenv:
#
# Name                    Version                   Build  Channel
ca-certificates           2018.03.07                    0  
certifi                   2018.10.15               py27_0  
libedit                   3.1.20170329         h6b74fdf_2  
libffi                    3.2.1                hd88cf55_4  
libgcc-ng                 8.2.0                hdf63c60_1  
libstdcxx-ng              8.2.0                hdf63c60_1  
ncurses                   6.1                  he6710b0_1  
openssl                   1.1.1a               h7b6447c_0  
pip                       18.1                     py27_0  
python                    2.7.15               h9bab390_4  
readline                  7.0                  h7b6447c_5  
setuptools                40.6.2                   py27_0  
sqlite                    3.25.3               h7b6447c_0  
tk                        8.6.8                hbc83047_0  
wheel                     0.32.3                   py27_0  
zlib                      1.2.11               h7b6447c_3  

Однако, если я пытаюсь запустить Python, он использует Python 3:

(myenv) ~$ python
Python 3.7.1 (default, Oct 23 2018, 19:19:42) 
[GCC 7.3.0] :: Anaconda, Inc. on linux

То же самое происходит, если я пытаюсь запустить скрипт с кодом Python 2 из среды.

(myenv) ~$ python hello2.py
File "hello2.py", line 1
    print "Hello World in Python 2"
                                ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello World in Python 2")?

Я пытался удалить и воссоздать среду, но это не помоглоразница.Почему это происходит?

ПРИЛОЖЕНИЕ

Дополнительная информация по запросу в комментариях:

(myenv) ~$ which python
~/miniconda3/envs/myenv/bin/python

(myenv) ~$ ls ~/miniconda3/envs/myenv/bin/python -l
lrwxrwxrwx 1 user user 9 Dec  3 22:43 ~/miniconda3/envs/myenv/bin/python -> python2.7

(myenv) ~$ echo $PATH
~/miniconda3/envs/myenv/bin:~/miniconda3/bin:[rest of usual PATH]

(myenv) ~$ alias
[...]
alias python='python3'

1 Ответ

0 голосов
/ 28 марта 2019

Проблема в псевдониме:

alias python='python3'

Этот псевдоним будет установлен где-нибудь в скриптах запуска вашей оболочки.Если вы используете bash, то это .bashrc, .bash_profile или .profile.Найдите и удалите его.

Расширение псевдонима имеет приоритет над поиском PATH (расширение псевдонима происходит первым).Если вы не можете узнать, где устанавливается псевдоним, вы можете явно unalias python в вашем .bashrc (или .profile, или обоих):

unalias python

В любом случае вы можете избежать использованияпсевдоним, если вы хотите запустить Python, заключив в кавычки токен python:

\python hello2.py
...