Why is my Virtualenv not working
A virtual environment for Python
Virtual environments have something of their own. I can set it up however I want and don't have to worry about the rest of the system.
Not only can I set up my environment differently from the system environment, sometimes I have to. Usually when I need software for a project that requires newer or older libraries than those available in the system. Then I can try to go through the dependency hell and get the software to work with the current system environment. Or I set up a virtual environment that fulfills all of the dependencies.
So a nice thing. There are also different types of virtual environments. There are
- virtual machines that provide a complete computer and operating system,
- Containers that only contain the most necessary software in a process group and
- virtual environments that only provide the required libraries for a programming language.
For Python is virtualenv such an environment. The paths for the libraries to be used are adjusted via environment variables so that the virtual environment is independent of the Python libraries of the operating system.
Of course, this requires more disk space, since a number of libraries are now available multiple times in the. But this space is considerably cheaper than the working time that goes into adapting new software to the system or - even worse - adapting the system to new software.
With that enough of the preface, let's try the matter out.
First of all, I need the program virtualenvwith which I can set up the individual environments.
At Fedora I can find this in the package python3-virtualenvthat I install with:
I'm already done with the installation. The software package contains the program virtualenv (possibly with appended version number), with which I can set up virtual environments for Python.
Now I have the software for the virtual environments, how do I use it?
Create a virtual environment
First of all - and I only have to do this once per project - I create a virtual environment.
I move to the project directory and call virtuelenv with the name of the directory in which the libraries of the virtual environment are to be stored.
I usually mention this directory venv for a good reason that becomes clear as you read on.
Activate the virtual environment
Every time I want to work with the virtual environment in my property, I have to activate it. But only once before I start working.
Since I don't want to type so much, I build an alias for Bash, my preferred shell.
This alias is not that much shorter than the actual command. But because it is only one word, I save a lot with the Command Line Completion compared to the command with the directory path.
And so that the alias works with every project with a virtual environment, I will name the associated directory venv.
Deactivate the virtual environment
When I no longer need the virtual environment, I can deactivate it with the following command.
In most cases it is not harmful for me to work with this Python environment in other directories. But in this way I am formally ending my work on this project, and besides, I don't get confused if I then work on another project with my own Python environment.
install a software
If I have activated the virtual environment, as described above, all Python libraries that I also install end up in it.
In order to have the same environment available on another computer later, I record my current status in a text file:
The file python3-requirements.txt I store it in the repository with my project and am thus one step closer to reproducible builds. The directory venv / With the Python modules, I don't necessarily need to drop the project.
With I can then set up another virtual environment with identical software after I have set up the environment as above:
Sphinx documentation system
Most often I use virtualenvwhen I use documentation and texts sphinx write.
When setting up, I not only create the virtual environment, but also install Sphinx myself in this environment.
After the installation I record the current status of the packages and start the project with:
Everything else goes as described above.
There is more detailed information on, for example, the Hitchhiker's Guide to Python.Posted 2017-05-13
- What is a simple limit problem
- Why does the world hate true peace
- Propose a smartphone under Rs 6k
- Menudo is still a band
- What is life worth living for?
- What do polar bears do as a shelter?
- What are some great awards for developers
- What is the real face of horror
- Can I merge two MI accounts?
- Do vitamins affect a pregnancy test
- Why is Google Ads stealing my money
- Where's San Jose
- How do I carry a backpack bag
- Why shouldn't we pet cats?
- Send this empty package to this address
- What is a pressure drop
- What is hockey
- What's the Best WordPress Git Deployment Tool
- Why don't I have a loyal friend?
- What are the dimensions of a histogram
- Can I do it after the 12th nift
- Who is your favorite F1 commentator
- How does the waiting list work
- Robert Downey Jr. is a Republican