2016-08-24 2 views
0

Я работаю над проектом django на двух отдельных системах, Debian Jessie и Mac El Capitan. Проект размещен на github, где обе системы будут тянуть или нажимать.Virtualenv дает разные версии для разных os

Однако, я заметил, что на моем Debian, когда я бегу python --version, это дает мне Python 3.4.2, но на моем Mac, это дает мне Python 2.7.10 несмотря на то, в одной и той же виртуальной среде. Более того, когда я запускаю django-admin --version на своем Debian, он дает мне 1.10, а на моем Mac, 1.8.3.

Это происходит даже тогда, когда я только что клонировал проекты из github и запускал команды.

Почему виртуальная среда не поддерживает одну и ту же версию python и django?

+1

Вам нужно явно указать Virtualenv, какой исполняемый файл Python использовать. Если вы не укажете один, он просто будет использовать стандартный/системный. –

+0

@OliverCharlesworth Даже в виртуальной среде? Вы имеете в виду, что мне нужно указать команду 'bin/python'? Я думал, что точка виртуальной среды - это изолировать питон моей системы. –

+0

Нет, точкой виртуальной среды является выделение пакетов, которые вы устанавливаете. –

ответ

0

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

pip freeze 

и сохранить свой вывод в файл с именем requirements.txt. Тогда кто-то еще может восстановить свою envirnment на своей машине, запустив

pip install -r requirements.txt 

При создании новой виртуальной среды вы можете сказать, Python интерпретатор вы хотите использовать с -p или --python переключателем, который должен быть затем путь к правильному исполняемому файлу.

Я лично рекомендую не модифицировать систему Python в любом случае, поскольку процедуры обслуживания системы часто полагаются на ее целостность. Сравнительно просто установить новые копии для Python 2 и 3 где-то вроде /usr/local/bin (для этого пользователи Mac часто используют brew) и имеют виртуальные среды, которые полагаются на разные интерпретаторы Python.

0

Благодаря комментариям @Oliver и @ Daniel, которые привели меня к ответу, почему это не сработало.

Я начал виртуальную среду на своем Debian с помощью python 3. virtualenv сделал виртуальную среду, но это было специально для Debian.

Когда я использовал его для mac, так как он не смог запустить исполняемый файл python в виртуальной среде (поскольку он совместим только с Debian), следовательно, он использовал мой python системы Mac, который является Python 2.7.10.

Таким образом, как virtualenv использует исполняемый файл python в системе, когда исполняемый файл python запускается в другой системе, он не будет работать.