Должен ли я использовать pip или pip3 для установки пакетов python3 внутри виртуальной среды?

#pip #ipython #virtualenv #python-3.4

#pip #ipython #virtualenv #python-3.4

Вопрос:

У меня есть python 2 (по умолчанию) и 3 на моей машине Linux. Я создал виртуальную среду, чтобы опробовать ее pandas с python3 помощью. Итак, я запустил:

virtualenv -p python3 pandas_env

Если я наберу python внутри этого env, он перейдет в стандартную оболочку python, с python 3 в качестве версии по умолчанию

 (panda_env)$ python
Python 3.4.3 (default, Sep 14 2016, 12:36:27) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
  

Чтобы установить ipython, я сделал:

(panda_env)$ pip install ipython

теперь при запуске ipython по умолчанию используется python2 вместо 3

 (panda_env)$ ipython
WARNING: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
Type "copyright", "credits" or "license" for more information.

IPython 2.3.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
  

С WARNING предложением установить ipython внутри virtualenv. Я думал, что установил ipython внутри среды, и почему он использует python2.x по умолчанию?

Как мне правильно установить ipython внутри virtualenv и как я могу заставить ipython использовать 3.x вместо 2.x?

Также, должен ли я использовать pip или pip3 для установки пакетов внутри virtualenv?

Комментарии:

1. python $(which ipython) ? Я думаю, что вы, вероятно, не установили ipython в virtualenv успешно.

2. большое спасибо, это сработало, .. но должен ли я pip install <package> или pip3 install <package> использовать эту среду в будущем .. Например, я создал эту среду для работы на pandas. Для установки pandas и зависимых от него модулей я должен использовать pip install pandas или pip3 install pandas

3. да, я установил его неправильно, это то, что говорит интерпретатор, когда я делаю ipython в оболочке внутри среды. Пожалуйста, не могли бы вы помочь с их правильной установкой

4. Попробуйте which pip и which pip3 посмотреть, находится ли каждый из них внутри virtualenv. Я думаю, что они оба должны быть, и в этом случае они должны делать точно то же самое.

5. для (env)$ which pip я получаю ~/panda_env/bin/pip и, для (env)$ which pip3 я получаю ~/panda_env/bin/pip3

Ответ №1:

Обратите внимание, для python> 3.3 рекомендуется запускать виртуальную среду с помощью pyvenv команды. Теперь это устарело с версии python> 3.6 в пользу python3 -m venv <environment name> (через https://docs.python.org/3/library/venv.html )

Отвечая на ваш вопрос, я не верю, что это имеет значение, основываясь на этой проверке:

 # start enviroment
$ python3 -m venv test_env; source test_env/bin/activate

# check python version 
(test_env) $ python --version
Python 3.6.0

# check pip and pip3
(test_env) $ which pip
~/Documents/test_env/bin/pip
(test_env) $ which pip3
~/Documents/test_env/bin/pip3

# The pip commands are different, but if we check their versions they are the same and both appear to be using python3.
(test_env) $ pip -V
pip 9.0.1 from ~/test_env/lib/python3.6/site-packages (python 3.6)
(test_env) $ pip3 -V
pip 9.0.1 from ~/test_env/lib/python3.6/site-packages (python 3.6)

# In fact the binaries for pip and pip3 within the environment are identical as you can see with this.
(test_env) $ diff ~/Documents/test_env/bin/pip ~/Documents/test_env/bin/pip3

# Checking with ipython
(test_env) $ pip install ipython
(test_env) $ ipython 
Python 3.6.0 (default, Dec 24 2016, 08:01:42)
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
  

Ответ №2:

Самый простой способ работы с виртуальными средами — загрузить anaconda и использовать систему контроля версий conda:

  • Работает точно так же для всех версий python
  • Python рассматривается как просто еще один пакет как часть среды
  • Все, что связано со средой, хранится в одной папке
  • Вы можете просмотреть историю изменений и выполнить откат к предыдущим версиям среды, если что-то перестает работать

Комментарии:

1. На самом деле это не отвечает на вопрос op. Кроме того, Anaconda может работать для ваших нужд, но это может быть помехой в других приложениях.

2. Я никогда не сталкивался с ситуацией, когда это могло бы быть препятствием. Можете ли вы привести пример?

3. Веб-разработка, я также сталкивался с тем, что это мешало homebrew, делая python переносимым — проще просто отправлять код с requirements.txt файл, а затем запуск pip install -r requirements.txt

4. почему это «самый простой»? Что делает это проще, чем любые другие методы?