Virtual environment, a self-contained directory tree that contains a Python installation for a particular version of Python, plus a number of additional packages.
Ubuntu 18.04 LTS comes with default Python3. In order to install pip3 and virtual environment use the below command.
Install Components
sudo apt-get install python3 python3-pip python3-venv
The above command update the python3 to the latest version, along with many dependencies and build essential tool too. The module used to create and manage virtual environments is called venv. venv will usually install the most recent version of Python that you have available
# python3 –version Python 3.6.5 # apt-get install python3-pip python3-pip python3-venv # python3 –version Python 3.6.7 # pip3 –version pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
Create Virtual Environment
The module used to create and manage virtual environments is called venv. venv will usually install the most recent version of Python that you have available. Decide a directory, where you want to place it.
krishna@training:~$ mkdir my_project
krishna@training:~$ cd my_project/
krishna@training:~/my_project$
krishna@training:~/my_project$ python3 -m venv my_projectenv
krishna@training:~/my_project$ ls -ltrh
total 4.0K
drwxrwxr-x 6 krishna krishna 4.0K Dec 13 14:48 my_projectenv
krishna@training:~/my_project$ source my_projectenv/bin/activate
(my_projectenv) krishna@training:~/my_project$
(my_projectenv) krishna@training:~/my_project$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
pip (9.0.1)
pkg-resources (0.0.0)
setuptools (39.0.1)
(my_projectenv) krishna@training:~/my_project$
(my_projectenv) krishna@training:~/my_project$ pip install flask uwsgi
Collecting flask
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB)
100% |████████████████████████████████| 92kB 272kB/s
Collecting uwsgi
Cache entry deserialization failed, entry ignored
Collecting click>=5.1 (from flask)
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
100% |████████████████████████████████| 81kB 64kB/s
Collecting Werkzeug>=0.14 (from flask)
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl (322kB)
100% |████████████████████████████████| 327kB 496kB/s
Collecting Jinja2>=2.10 (from flask)
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl (126kB)
100% |████████████████████████████████| 133kB 303kB/s
Collecting itsdangerous>=0.24 (from flask)
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask)
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/08/04/f2191b50fb7f0712f03f064b71d8b4605190f2178ba02e975a87f7b89a0d/MarkupSafe-1.1.0-cp36-cp36m-manylinux1_x86_64.whl
Installing collected packages: click, Werkzeug, MarkupSafe, Jinja2, itsdangerous, flask, uwsgi
Successfully installed Jinja2-2.10 MarkupSafe-1.1.0 Werkzeug-0.14.1 click-7.0 flask-1.0.2 itsdangerous-1.1.0 uwsgi-2.0.17.1
(my_projectenv) krishna@training:~/my_project$
(my_projectenv) krishna@training:~/my_project$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
Click (7.0)
Flask (1.0.2)
itsdangerous (1.1.0)
Jinja2 (2.10)
MarkupSafe (1.1.0)
pip (9.0.1)
pkg-resources (0.0.0)
setuptools (39.0.1)
uWSGI (2.0.17.1)
Werkzeug (0.14.1)
(my_projectenv) krishna@training:~/my_project$
(my_projectenv) krishna@training:~/my_project$ pip freeze > requirements.txt
(my_projectenv) krishna@training:~/my_project$
(my_projectenv) krishna@training:~/my_project$ cat requirements.txt
Click==7.0
Flask==1.0.2
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
pkg-resources==0.0.0
uWSGI==2.0.17.1
Werkzeug==0.14.1
(my_projectenv) krishna@training:~/my_project$ deactivate
krishna@training:~/my_project$
Conclusion
Successfully, setup virtual environment. Enjoy!!!
