Python: виртуальная среда
Модератор: Olej
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Python: виртуальная среда
Мало того, что 10 лет (или около того) существуют параллельные ветки версий Python 2 & 3 синтаксически несовместимые, так ещё и великое множество сторонних пакетов Python (а их стало действительно много и они представляют ценность) имеют свои системы версий, и одни из них годятся с Python 2, другие с Python 3, а третьи - и с тем и с другим.
Очень сложно стало разбираться с этим зоопарком!
Последнее время пошло много публикаций относительно виртуальных сред Python, когда в каждой конкретной среде устанавливается свой набор версий и Python, и всех требуемых для проекта пакетов и модулей. Т.е.: отдельный проект - отдельная виртуальная среда под него!
Похоже, что это решение проблем со зверинцем версий!
Очень сложно стало разбираться с этим зоопарком!
Последнее время пошло много публикаций относительно виртуальных сред Python, когда в каждой конкретной среде устанавливается свой набор версий и Python, и всех требуемых для проекта пакетов и модулей. Т.е.: отдельный проект - отдельная виртуальная среда под него!
Похоже, что это решение проблем со зверинцем версий!
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: Виртуальная среда
Виртуальная среда Python – ОсновыOlej писал(а):Последнее время пошло много публикаций относительно виртуальных сред Python,
А это оригинал предыдущего перевода:автор Monty Python
Апр 08, 2018
...
Представим следующий сценарий, где у вас есть два проекта: проект А и проект Б, которые оба имеют зависимость от одной и той же библиотеки – проект В. Проблема становится явной, когда мы начинаем запрашивать разные версии проекта В. Может быть так, что проект А запрашивает версию 1.0.0, в то время как проект Б запрашивает более новую версию 2.0.0, к примеру.
Python Virtual Environments: A Primer
Make use of virtual environments for Python development (глава)by Real Python
What are Python virtual environments? (глава)
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: Виртуальная среда
Как я себе создавал виртуальные среду под OpenCV верс.4 & распознавание QR кодов...Olej писал(а): Make use of virtual environments for Python development (глава)
What are Python virtual environments? (глава)
Тупо следуя заметкам Adrian Rosebrock (ссылки выше).
Код: Выделить всё
[olej@xenix ~]$ python2
Python 2.7.15 (default, May 16 2018, 17:50:09)
[GCC 8.1.1 20180502 (Red Hat 8.1.1-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.prefix
'/usr'
>>> import site
>>> data = site.getsitepackages()
>>> data
['/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages', '/usr/lib/site-python']
>>> quit()
[olej@xenix ~]$ sudo pip install virtualenv
[sudo] пароль для olej:
Collecting virtualenv
Downloading https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c35d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl (1.9MB)
100% |████████████████████████████████| 1.9MB 2.4MB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.0.0
Код: Выделить всё
[olej@xenix ~]$ sudo pip install virtualenvwrapper
Collecting virtualenvwrapper
Downloading https://files.pythonhosted.org/packages/2b/8c/3192e10913ad945c0f0fcb17e9b2679434a28ad58ee31ce0104cba3b1154/virtualenvwrapper-4.8.2-py2.py3-none-any.whl
Collecting virtualenv-clone (from virtualenvwrapper)
Downloading https://files.pythonhosted.org/packages/6d/c2/dccb5ccf599e0c5d1eea6acbd058af7a71384f9740179db67a9182a24798/virtualenv_clone-0.3.0-py2.py3-none-any.whl
Collecting stevedore (from virtualenvwrapper)
Downloading https://files.pythonhosted.org/packages/a1/d9/93a975469c53a9ee85de9ec0deb12345aa777748b4c263860668592344fe/stevedore-1.29.0-py2.py3-none-any.whl
Requirement already satisfied: virtualenv in /usr/lib/python2.7/site-packages (from virtualenvwrapper) (16.0.0)
Requirement already satisfied: six>=1.10.0 in /usr/lib/python2.7/site-packages (from stevedore->virtualenvwrapper) (1.11.0)
Collecting pbr!=2.1.0,>=2.0.0 (from stevedore->virtualenvwrapper)
Downloading https://files.pythonhosted.org/packages/69/1c/98cba002ed975a91a0294863d9c774cc0ebe38e05bbb65e83314550b1677/pbr-4.2.0-py2.py3-none-any.whl (100kB)
100% |████████████████████████████████| 102kB 1.8MB/s
Installing collected packages: virtualenv-clone, pbr, stevedore, virtualenvwrapper
Successfully installed pbr-4.2.0 stevedore-1.29.0 virtualenv-clone-0.3.0 virtualenvwrapper-4.8.2
Код: Выделить всё
[olej@xenix ~]$ tail -n4 .bashrc
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: Виртуальная среда
Запускаем новую вкладку (окно) терминала, потому как нам теперь нужен новый экземпляр переменных среды и ...Olej писал(а):Код: Выделить всё
[olej@xenix ~]$ tail -n4 .bashrc # virtualenv and virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh
Код: Выделить всё
bash: /usr/local/bin/virtualenvwrapper.sh: Нет такого файла или каталога
У меня совершенно другой дистрибутив Linux (ROM вместо DEB - специально на нём тренируюсь ) и пути стандартной установки пакетов отличаются!
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: Виртуальная среда
Olej писал(а): У меня совершенно другой дистрибутив Linux (ROM вместо DEB - специально на нём тренируюсь ) и пути стандартной установки пакетов отличаются!
Код: Выделить всё
[olej@xenix ~]$ which virtualenvwrapper.sh
/usr/bin/virtualenvwrapper.sh
Код: Выделить всё
[olej@xenix ~]$ tail -n4 .bashrc
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/bin/virtualenvwrapper.sh
Код: Выделить всё
/usr/bin/python3: Error while finding module specification for 'virtualenvwrapper.hook_loader' (ModuleNotFoundError: No module named 'virtualenvwrapper')
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 and that PATH is
set properly.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: Виртуальная среда
Как оказалось ... путём проб и ошибок:Olej писал(а): Это уже ... загадочнее
- я установил virtualenv + virtualenvwrapper с помощью pip под Python2 (и это нормально само по себе)
- но в .bashrc прописан Python 3
- который ничего не знает про то что...
Доустанавливаю:
Код: Выделить всё
[olej@xenix ~]$ sudo python3 -m pip install virtualenv
[sudo] пароль для olej:
WARNING: Running pip install with root privileges is generally not a good idea. Try `__main__.py install --user` instead.
Collecting virtualenv
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c35d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl (1.9MB)
100% |████████████████████████████████| 1.9MB 443kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.0.0
[olej@xenix ~]$ sudo python3 -m pip install virtualenvwrapper
WARNING: Running pip install with root privileges is generally not a good idea. Try `__main__.py install --user` instead.
Collecting virtualenvwrapper
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/2b/8c/3192e10913ad945c0f0fcb17e9b2679434a28ad58ee31ce0104cba3b1154/virtualenvwrapper-4.8.2-py2.py3-none-any.whl
Collecting virtualenv-clone (from virtualenvwrapper)
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/6d/c2/dccb5ccf599e0c5d1eea6acbd058af7a71384f9740179db67a9182a24798/virtualenv_clone-0.3.0-py2.py3-none-any.whl
Requirement already satisfied: virtualenv in /usr/local/lib/python3.6/site-packages (from virtualenvwrapper)
Collecting stevedore (from virtualenvwrapper)
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/a1/d9/93a975469c53a9ee85de9ec0deb12345aa777748b4c263860668592344fe/stevedore-1.29.0-py2.py3-none-any.whl
Collecting pbr!=2.1.0,>=2.0.0 (from stevedore->virtualenvwrapper)
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/69/1c/98cba002ed975a91a0294863d9c774cc0ebe38e05bbb65e83314550b1677/pbr-4.2.0-py2.py3-none-any.whl (100kB)
100% |████████████████████████████████| 102kB 1.5MB/s
Requirement already satisfied: six>=1.10.0 in /usr/lib/python3.6/site-packages (from stevedore->virtualenvwrapper)
Installing collected packages: virtualenv-clone, pbr, stevedore, virtualenvwrapper
Successfully installed pbr-4.2.0 stevedore-1.29.0 virtualenv-clone-0.3.0 virtualenvwrapper-4.8.2
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: Виртуальная среда
Olej писал(а):Olej писал(а): Доустанавливаю:
Код: Выделить всё
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/premkproject
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/postmkproject
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/initialize
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/premkvirtualenv
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/postmkvirtualenv
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/prermvirtualenv
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/postrmvirtualenv
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/predeactivate
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/postdeactivate
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/preactivate
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/postactivate
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/get_env_details
Код: Выделить всё
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
И тогда бы виртуальные окружения создавались бы (см. ниже) нормально, но дефайлтным там был бы Python2, что можно поменять опциями при создании.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: Виртуальная среда
Создаю новое виртуальное окружение:Olej писал(а): И тогда бы виртуальные окружения создавались бы
Код: Выделить всё
[olej@xenix ~]$ mkvirtualenv py3cv3 -p python3
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/olej/.virtualenvs/py3cv3/bin/python3
Also creating executable in /home/olej/.virtualenvs/py3cv3/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/py3cv3/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/py3cv3/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/py3cv3/bin/preactivate
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/py3cv3/bin/postactivate
virtualenvwrapper.user_scripts creating /home/olej/.virtualenvs/py3cv3/bin/get_env_details
Код: Выделить всё
(py3cv3) [olej@xenix ~]$ ls ~/.virtualenvs/py3cv3/bin
activate activate.fish easy_install get_env_details pip3 postactivate preactivate python python3.6 wheel
activate.csh activate_this.py easy_install-3.6 pip pip3.6 postdeactivate predeactivate python3 python-config
Код: Выделить всё
(py3cv3) [olej@xenix ~]$ pip list
Package Version
---------- -------
pip 18.0
setuptools 40.2.0
wheel 0.31.1
Абсолютно чистое окружение, в котором ничего нет и устанавливать можно и надо с нуля.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: Виртуальная среда
Первейшее дело входя куда-нибудь побеспокоиться как же будем потом оттуда выходить...Olej писал(а): Создаю новое виртуальное окружение:
В новом окне терминала:
Код: Выделить всё
[olej@xenix ~]$ source ~/.virtualenvs/py3cv3/bin/activate
(py3cv3) [olej@xenix ~]$ deactivate
Код: Выделить всё
(py3cv3) [olej@xenix ~]$ which python
~/.virtualenvs/py3cv3/bin/python
(py3cv3) [olej@xenix ~]$ python --version
Python 3.6.6
Код: Выделить всё
(py3cv3) [olej@xenix ~]$ deactivate
[olej@xenix ~]$
Код: Выделить всё
[olej@xenix ~]$ python --version
Python 2.7.15
Код: Выделить всё
[olej@xenix ~]$ pip list
Package Version
---------------------------- -----------
backports.ssl-match-hostname 3.5.0.1
beautifulsoup4 4.6.0
chardet 3.0.4
cssselect 0.9.2
cycler 0.10.0
dockerpty 0.4.1
enum34 1.1.6
functools32 3.2.3.post2
galternatives 0.9
html5lib 0.999999999
idna 2.5
ipaddr 2.1.10
ipaddress 1.0.18
libvirt-python 4.1.0
lxml 4.1.1
matplotlib 2.0.2
mercurial 4.4.2
nose 1.3.7
numpy 1.14.5
ocl 0.12
pbr 4.2.0
Pillow 5.2.0
pip 18.0
pkinter 1.31.0
pycairo 1.16.3
pycurl 7.43.0.2
pygobject 3.28.3
PyPAM 0.5.0
pyparsing 2.2.0
PySocks 1.6.8
python-dateutil 2.7.3
python-dmidecode 3.12.2
pytz 2017.2
pyxattr 0.5.3
PyYAML 3.12
repoze.lru 0.4
requests 2.18.4
rpm 4.14.1
setproctitle 1.1.10
setuptools 39.2.0
six 1.11.0
smartcols 0.3.0
stevedore 1.29.0
subprocess32 3.2.7
tkBasic 0.2
urlgrabber 3.10.1
urllib3 1.22
virtualenv 16.0.0
virtualenv-clone 0.3.0
virtualenvwrapper 4.8.2
webencodings 0.5.1
zenmap 7.60
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: Виртуальная среда
Вдогонку:
Убеждаемся:
Но это уже вопросы только удобства...
Кстати, можно и не создавать новый терминал, а только перезагрузить переменные окружения:Olej писал(а): Запускаем новую вкладку (окно) терминала, потому как нам теперь нужен новый экземпляр переменных среды и ...
Код: Выделить всё
[olej@xenix ~]$ source ~/.bashrc
Код: Выделить всё
[olej@xenix ~]$ echo $WORKON_HOME
/home/olej/.virtualenvs
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей