Python application uses modules and packages that are not included in the standard library. These applications often require a specific version of the library.
The reason is the app often demands to resolve a particular bug or to write an application in an obsolete version.
It is easy to resolve this problem by creating a virtual environment in python 3. It is a self-contained directory tree. In addition to various additional packages, it includes a particular version of python installation.
Isolated Python Environment
A virtual environment (Virtualenv) is a means to make an isolated python environment. Having its installation directories, virtualenv does not share its libraries with other virtual environments.
Therefore, the virtual environment is recommended and considered the easiest way to organize a custom Python environment.
Difference between Virtualenv and Venv:
Venv comes with Python 3, and Python 2 does not include venv. Virtualenv is a library that delivers more functionality when compared with venv. The following are some features that venv does not contain as compared to virtualenv.
- Venv is slower
- Venv is not as extendable,
- Venv cannot make virtual environments for custom installed python versions
- Venv cannot be upgraded via pip,
- Venv has not as rich programmatic API
Yes, it is right that a virtual environment can be created using venv with python 3, even though you are recommended to install and use virtualenv considering the above features.
Installing Virtualenv using pip3:
Virtual can only be installed on DreamHost servers used for Python 2. While, if it is about Python3, then you must consider and install virtualenv using pip3.
Custom Versioned Python 3
Generally, pip3 is not installed by default on the server. Therefore, a user requires to install a custom versioned Python 3 first. This customed versioned Python 3 also contains pip3. After installation and activation, you can run following the python3 command.
[server]$ python3 -m pip install --upgrade pip
Once pip3 is upgraded, you can install virtualenv:
[server]$ pip3 install virtualenv
Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
100% |████████████████████████████████| 1.8MB 367kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-15.1.0
You will want a full path to Python 3 virtualenv. To meet this need, you can use the following command:
[server]$ which virtualenv
How to Create a Virtualenv Using a Custom Python:
It is liked more to have a custom versioned python over the server’s version. To create a new virtualenv with the use of custom-installed Python version, you can follow these steps:
Python Installation Instructions
- Jot down the full file path installation of custom version python. In the installation article, if you have followed all the instructions, the full path is as;
12[server]$ which python3/home/username/opt/python-3.6.2/bin/python
- You can make a new virtual environment navigating to the site’s directory:
1[server]$ cd ~/example.com
- Source your .bash_profile
1[server]$ . ~/.bash_profile
- Create the virtualenv while you are specifying the version of your desired Python. The following command can be used to create a virtualenv. A flag (-p) is used to determine the full path to the customized Python3 you just installed.
1234567[server]$ virtualenv -p /home/example_username/opt/python-3.6.2/bin/python3 venvRun virtualenv with interpreter /home/example_username/opt/python-3.6.2/bin/python3Using base prefix '/home/example_username/opt/python-3.6.2'New python executable in /home/example_username/example.com/env/bin/python3Also, create executable in /home/example_username/example.com/env/bin/pythonInstall setup tools, pip, wheel...done.
- You can use the following command for activating the new virtual environment.
1[server]$ source venv/bin/activate
- If you verify the Python version is correct or not, use the following command.
12[server]$ source venv/bin/activate[server]$ python -VPython 3.6.2
Now, you can see the packages have been installed using pip in the folder of virtual environments project that is isolated from the python installation
Deactivating your Virtualenv:
Once you have completed your work in the virtual environment and you want to deactivate it, you can run the following command;
- This command puts you back to the user’s default settings.
How to delete a virtual environment:
If a user wants to remove a created virtual environment, then he can delete by deleting the project folder, and the following demand can be used.
[server]$ rm -rf venv
How to install custom modules in Python:
When working with Python, it is considered good to create a virtual environment. The reason is that it provides you an isolated environment. Any work done in this isolated environment does not affect other environments.
To install a custom model, you can use pip3;
- Create a virtual environment after installing a custom versioned Python 3.
- You must be assured you are in the same directory of the created virtual environment.
- Now use the following command to activate the Virtualenv.
1[server]$ source venv/bin/activate
- Use pip3 to install a module by the following command:
1(venv) [server]$ pip3 install <module>
How to Troubleshoot:
You can face an error while creating a Virtualenv:
When you are creating a virtualenv with the use of Python3, you can face the following error
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'
OSError: Command /home/username/venv/bin/python3 -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip failed with error code 1
To avoid this situation, a user has the option to add the following line at the time of installing a custom version in the .bash profile. Hence the user can avoid this error.
Using the full path to your custom Virtualenv:
It also happens when you run the command of virtualenv; it is running in a version outside of your custom installation. You must try the following command;
[server]$ which virtualenv
In this way they user can know the version in custom python3 directory. Afterward, user can create a Virtualenv by using the full path as follows;
[server]$ /home/user/opt/python-3.8.0/bin/virtualenv -p /home/user/opt/python-3.8.0/bin/python3 venv