#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. почему это «самый простой»? Что делает это проще, чем любые другие методы?