Используйте python2.7 в venv, где python3 является python по умолчанию - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть python2.7, python3.7, python3.6 на моей машине.Я до сих пор не уверен, как управлять и увидеть расположение всех трех версий Python.

В настоящее время я просто набираю python с именем версии, чтобы открыть этот терминал или запустить скрипт.

Я сделал python3.6 по умолчанию, добавив псевдонимы в ~/.bashrc.

Я установил virtualenv с использованием python3.6, поэтому всякий раз, когда я создаю venc по умолчанию, он принимает в нем python3.6.

Чтобы создать venv с python2.7, я пытался -

virtualenv -p /usr/bin/python2.7 /Users/karim/Documents/venv2.7

Но и здесь, в этом venv2.7, когда я вижу версию Python, он выдает 3.6.Когда я набираю python2.7 в терминале, он открывает python2.7.

Я могу сделать псевдоним для python2.7, находящегося в виртуальной среде, но я сомневаюсь, что это может создать python2.7 по умолчанию и за пределами venv.

  1. Как я могу создать виртуальную среду с Python2.7 по умолчанию?
  2. Можете ли вы отослать мне любую статью, которая объясняет, как управлять несколькими версиями Python, переключаться с одной на другую, смотрите тамlocation

Я действительно проверил все потоки SO, но никакие статьи не помогли мне создать venv с python2.7 в системе с настройкой по умолчанию python3.6.

Ответы [ 4 ]

0 голосов
/ 21 февраля 2019

Я объяснил в комментариях и описании вопроса, что я добавил

alias python=python3.6

В bashrc

и попытался создать виртуальную среду python2.7, но в ней все еще открывается 3.6.

Никто не говорил о bash_profile файле.

В какой-то другой статье, глядя на pyenv, я видел, что они считают bash_profile псевдонимом.Я внезапно проверил мой, и там было

alias python=python3.6

.Вот почему он принимал python3.6 и в виртуальной среде python2.7.

Я закомментировал этот псевдоним, тогда он не принимает Python 3.6 глобально.

Одно важное замечание: вы меняете псевдоним и хотите увидеть его эффект, открываете новую вкладку или терминал и тестируете там.Если вы попробуете в старой работающей виртуальной среде, она может показать только старую версию Python.

Спасибо всем за ваши ответы и время.Это помогло мне узнать новое.

0 голосов
/ 20 февраля 2019

Правильно ли вы активируете виртуальную среду?После создания virtualenv вы должны выполнить команду

source /Users/karim/Documents/venv2.7/bin/activate

, чтобы изменить вашу среду, чтобы команда python ссылалась на переводчика в virtualenv.Помните, что virtualenv не имеет ничего общего с вашим текущим рабочим каталогом ...

Возможно ли, что virtualenv, который вы используете, связан с неверным двоичным файлом Python?В моей системе много Pythons, включая Python3.7 и Python 2.7 в / usr / local / bin :

fathead:~ sholden$ ls -l /usr/local/bin/python*
lrwxr-xr-x  1 sholden  staff   38  6 Dec 12:26 /usr/local/bin/python@ -> ../Cellar/python@2/2.7.15_1/bin/python
lrwxr-xr-x  1 sholden  staff   38  6 Dec 12:34 /usr/local/bin/python-build@ -> ../Cellar/pyenv/1.2.8/bin/python-build
lrwxr-xr-x  1 sholden  staff   45  6 Dec 12:26 /usr/local/bin/python-config@ -> ../Cellar/python@2/2.7.15_1/bin/python-config
lrwxr-xr-x  1 sholden  staff   39  6 Dec 12:26 /usr/local/bin/python2@ -> ../Cellar/python@2/2.7.15_1/bin/python2
lrwxr-xr-x  1 sholden  staff   46  6 Dec 12:26 /usr/local/bin/python2-config@ -> ../Cellar/python@2/2.7.15_1/bin/python2-config
lrwxr-xr-x  1 sholden  staff   41  6 Dec 12:26 /usr/local/bin/python2.7@ -> ../Cellar/python@2/2.7.15_1/bin/python2.7
lrwxr-xr-x  1 sholden  staff   48  6 Dec 12:26 /usr/local/bin/python2.7-config@ -> ../Cellar/python@2/2.7.15_1/bin/python2.7-config
lrwxr-xr-x  1 sholden  staff   34  6 Dec 12:22 /usr/local/bin/python3@ -> ../Cellar/python/3.7.1/bin/python3
lrwxr-xr-x  1 sholden  staff   41  6 Dec 12:22 /usr/local/bin/python3-config@ -> ../Cellar/python/3.7.1/bin/python3-config
lrwxr-xr-x  1 sholden  staff   36  6 Dec 12:22 /usr/local/bin/python3.7@ -> ../Cellar/python/3.7.1/bin/python3.7
lrwxr-xr-x  1 sholden  staff   43  6 Dec 12:22 /usr/local/bin/python3.7-config@ -> ../Cellar/python/3.7.1/bin/python3.7-config
lrwxr-xr-x  1 sholden  staff   37  6 Dec 12:22 /usr/local/bin/python3.7m@ -> ../Cellar/python/3.7.1/bin/python3.7m
lrwxr-xr-x  1 sholden  staff   44  6 Dec 12:22 /usr/local/bin/python3.7m-config@ -> ../Cellar/python/3.7.1/bin/python3.7m-config
lrwxr-xr-x  1 sholden  staff   39  6 Dec 12:26 /usr/local/bin/pythonw@ -> ../Cellar/python@2/2.7.15_1/bin/pythonw
lrwxr-xr-x  1 sholden  staff   40  6 Dec 12:26 /usr/local/bin/pythonw2@ -> ../Cellar/python@2/2.7.15_1/bin/pythonw2
lrwxr-xr-x  1 sholden  staff   42  6 Dec 12:26 /usr/local/bin/pythonw2.7@ -> ../Cellar/python@2/2.7.15_1/bin/pythonw2.7
-rwxr-xr-x@ 1 sholden  staff  230 25 Sep  2017 /usr/local/bin/pythonz*

which (также type вMacOS), которые говорят вам, с каким исполняемым файлом связана команда.Я подтвердил, что получил python3.7 с

fathead:~ sholden$ which python3.7
/usr/local/bin/python3.7

Чтобы убедиться, что я использую правильный Python virtualenv, я использую двоичный файл Python для его выполнения:

fathead:~ sholden$ python3.7 -m virtualenv -p /usr/local/bin/python2.7 venv2.7
Running virtualenv with interpreter /usr/local/bin/python2.7
New python executable in /Users/sholden/venv2.7/bin/python2.7
Also creating executable in /Users/sholden/venv2.7/bin/python
Installing setuptools, pip, wheel...
done.

Это можетОказывается, на вашем Python 3.7 не установлена ​​virtualenv.Если это так, установите его с помощью

fathead:~ sholden$ python3.7 -m pip install virtualenv
Looking in indexes: https://pypi.org/simple, https://pypi.python.org/simple
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/7e/1b/6c00d57127608793e16e8b7f813e64d58a1938505c42fe190d1386ab41e1/virtualenv-16.4.0-py2.py3-none-any.whl (2.0MB)
    100% |████████████████████████████████| 2.0MB 3.4MB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.4.0

После создания virtualenv вы сможете активировать его, как описано.

0 голосов
/ 20 февраля 2019

Я сделал Python3.6 по умолчанию, используя псевдонимы в ~ / .bashrc

Это источник вашей проблемы.Если я правильно понимаю, вы создали псевдоним для python, что заставляет вашу систему не искать в вашей PATH вашу версию Python, а вместо этого использовать ваш псевдоним.Это поведение не меняется при использовании virtualenv, потому что их активация изменит ваш PATH, но псевдоним по-прежнему не позволяет использовать другие версии Python.

Чтобы сделать установку Python «по умолчанию», вы должны изменитьPATH добавив желаемую версию Python вперед, не создавайте псевдонимы.

Вы можете использовать команды

which python3   #python version 3x
which pyhton27  #python version 2.7
which python    # "default" python

, чтобы проверить расположение ваших установок Python, а затем добавить строку

export PATH="<Directory of desired python version>:$PATH"

, чтобы установить желаемую версию Python по умолчанию.

0 голосов
/ 20 февраля 2019

из Установите и запустите Python 3 одновременно с Python 2 , вам нужно установить (python 2 и python 3) Python из центра программного обеспечения и затем использовать предоставленное решениездесь, чтобы создать виртуальную среду

, если в вашей системе установлен python 2.7 и вы установили его, и вы используете псевдоним python27 в ~ / .bashrc для запуска python 2.7

, тогда вы можете создать виртуальную среду

python27 -m virtualenv <path to venv>

...