Создание virtualenv с помощью python 2

58
5

В ubuntu 16.04 у меня есть в bashrc:

alias python=python3.6

Другими словами, команда python запускает python 3.6.

Теперь я хочу virtualenv с python 2.7.

Я установил virtualenv:

virtualenv -p python2 pgadmin4

Затем активируйте его.

Теперь проверьте:

$ which python
/home/michael/PycharmProjects/venv/pgadmin4/bin/python

Двойная проверка:

(pgadmin4) michael@michael-desktop:~/PycharmProjects/venv/pgadmin4/bin$ ls -la
total 3516
drwxrwxr-x 2 michael michael 4096 окт 12 13:05 .
drwxrwxr-x 7 michael michael 4096 окт 12 13:05 ..
-rw-rw-r-- 1 michael michael 2102 окт 12 13:05 activate
-rw-rw-r-- 1 michael michael 1044 окт 12 13:05 activate.csh
-rw-rw-r-- 1 michael michael 2242 окт 12 13:05 activate.fish
-rw-rw-r-- 1 michael michael 1137 окт 12 13:05 activate_this.py
-rwxrwxr-x 1 michael michael 272 окт 12 13:05 easy_install
-rwxrwxr-x 1 michael michael 272 окт 12 13:05 easy_install-2.7
-rwxrwxr-x 1 michael michael 244 окт 12 13:05 pip
-rwxrwxr-x 1 michael michael 244 окт 12 13:05 pip2
-rwxrwxr-x 1 michael michael 244 окт 12 13:05 pip2.7
lrwxrwxrwx 1 michael michael 7 окт 12 13:05 python -> python2
-rwxrwxr-x 1 michael michael 3546104 окт 12 13:05 python2
lrwxrwxrwx 1 michael michael 7 окт 12 13:05 python2.7 -> python2
-rwxrwxr-x 1 michael michael 2361 окт 12 13:05 python-config
-rwxrwxr-x 1 michael michael 251 окт 12 13:05 wheel

Ну, просто писать питон должен запустить python2.

Но:

$ python
Python 3.6.2 (default, Jul 20 2017, 08:43:29)

Не могли бы вы дать мне удар здесь?

спросил(а) 2017-10-12T13:23:00+03:00 3 года назад
1
Решение
58

Когда вы активируете virtualenv, под капотом переменная среды PATH переписывается, чтобы придать больший приоритет директории bin вашего virtualenv.

Команда which python сообщает вам путь, который вы ожидаете, потому что он игнорирует какой-либо alias конечном итоге настроен. Он рассматривает переменную среды PATH и пытается разрешить текущий путь python.

Вместо этого Bash учитывает все настроенные alias и когда вы набираете python, bash разрешает команду python3.6 которая не находится в вашем каталоге virtualenv bin и переходит в системную.

Единственные возможные решения:

удалить псевдоним добавьте символическую ссылку python3.6 → python внутри папки bin вашего виртуального

ответил(а) 2017-10-12T13:44:00+03:00 3 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема