2016-11-15 2 views
2

Мне нужно работать с обоими Python 2.7.12 и python 3.5.2 одновременно на моем Ubuntu 16.04.1 LTS. Python 3 был предварительно установлен, поэтому я понятия не имею, где он находится, с точки зрения пути к каталогу, в то время как python 2 находится в /usr/local/lib/python2.7/.Как мы отдельно используем, поддерживаем и устанавливаем библиотеки для python 2.7 и python 3.5 на той же Ubuntu OS?

Я нашел много вопросов о SO и о askubuntu о том, как установить, но ничего о том, как их использовать по отдельности, установке разных библиотек и о том, чего я должен избегать или быть осторожным, если я поддерживаю эту двойную питонную вещь для долгосрочный? Например, я обычно запускаю pip install для установки библиотеки, и я могу проверить, что она установлена ​​в моем каталоге python2, но как установить тот же пакет для моего python3 без конфликтов? Что-то вроде: python3 pip install <package> ?? Где установлен python3 по умолчанию? И как я могу вызвать python3 для путей, где python не является частью команды, например: pip freeze, sudo-apt get и т. Д.?

PS: Я официально не работал с Virtualenv, но мне сообщили, что обычно это полезно для изоляции проектов в версии языка python, а не для изоляции двух разных языковых версий друг от друга.

Пожалуйста, дайте мне знать.

Благодаря

+0

вы можете работать с python2 и Python3. Python3 должен быть найден в /usr/local/lib/python3.x, для запуска записи pythonx в файл pythonx scrypt.py. – eyllanesc

+0

'/ usr/local/lib/python3.x' содержит только один каталог с именем dist-packages, который сам является пустой. Поэтому я изначально думал, что его папка-призрак и python3 на самом деле не установлены, но когда я запускаю 'python3' в Terminal, я получаю:' Python 3.5.2 (по умолчанию, 5 июля 2016, 12:43:10) [GCC 5.4. 0 20160609] on linux Введите «помощь», «авторское право», «кредиты» или «лицензия» для получения дополнительной информации. «Поэтому я не знаю, правильно ли этот путь. –

+0

Да, это правильно – eyllanesc

ответ

6

Это не является абсолютно никаких проблем, так как Python делает это для вас. Вам вообще не нужен виртуальный.

Если вы используете пакеты Ubuntu, убедитесь, что вы используете python3- версии для Python 3, а также обычные python- версии для Python 2.
Например, python3-numpy и python-numpy.

При использовании pip для установки дополнительных пакетов, для Вас или использовать pip скрипт с номером версии, приложенные: pip2.7 или pip3.5, или мой предпочтительный метод, называют pip в качестве модуля для соответствующего Python исполняемого:

python2.7 -m pip install <whatever> 

и

python3.5 -m pip install <whatever> 

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

Do не сквозит с PYTHONPATH, если вы действительно не знаете, что делаете. Это может привести к тому, что вы установите PYTHONPATH в каталог с модулями Python 2.7, а затем с помощью Python 3.5 для запуска.


Если вы начинаете с нуля, вам, возможно, потребуется установить pip первый.

Для системы Python (s), используйте соответствующий пакет:

sudo apt install python-pip 
sudo apt install python3-pip 

Для локально установленного Python (ов), используйте встроенный модуль загрузчика:

pythonx.y -m ensurepip 

Примечание к исполняемым файлам на Python, установленным ОС:

Python 3.5 проживает в /usr/bin/python3.5, Python 2.7 (один OS) на /usr/bin/python2.7. Вы могли бы даже использовать OS 2.7 один рядом с ваш локально установленный /usr/local/bin/python2.7 (и запутаться, когда пакет не найден, потому что вы использовали неправильный).
Или установите Python 3.6 рядом с Python 3.5 (при условии, что вы использовали make altinstall, поэтому python3 не перезаписывается).

Это также объясняет, почему вы не хотите, чтобы запустить pip (или даже pip2.7) как: pip2.7 может получить вам одну систему, вместо одного в /usr/local/bin/pip2.7, в зависимости от вашего PATH.

(То же самое относится и к python2.7 исполняемый файл, так что если вам нужно указать полный путь /usr/local/bin/python2.7 для запуска, что один (или его псевдоним), то же самое справедливо и для pip2.7. Если же, с другой стороны, /usr/local/bin является первый на вашем PATH, вы должны в принципе никогда не впадать в те же pip и python исполняемых файлов.)

+0

'python2.7 -m pip freeze' и' python3.5 -m pip freeze', return '/usr/local/bin/python2.7: Нет модуля с именем pip' и' /usr/bin/python3.5: Нет модуля с именем pip' соответственно. Однако 'pip2.7 freeze' работает, а' pip3.5 freeze' возвращает 'pip3.5: команда не найдена'. Мысли? –

+0

Для 3.5 попробуйте 'sudo apt install python3-pip'. Для Python 2.7 попробуйте '/usr/local/bin/python2.7 -m securitypip'. Похоже, Ubuntu не устанавливает по умолчанию. – Evert

+0

Модуль 'surepip' bootstrapper должен запускаться только один раз, чтобы установить сам' pip' (и только для вашего самонастраиваемого python2.7, так как это не поставляется с пакетом.) Каков полный путь для 'pip2 .7' вы использовали выше? – Evert