Is pyenv or virtualenv essential for Django?
VirtualBox isolates your development operating system from your normal operating system. Virtualenv isolates your project's Python packages from the system Python packages.
Many Linux distributions install Python packages as dependencies for other software into the system-wide site-packages directory. Python doesn't have a way to version packages with the same name, so you will run into problems when your project depends on package==10.0.0 but your distribution already installed package==0.0.2 that you cannot upgrade without breaking something.
Virtual environments are extremely lightweight. They're really just a new entry in your PATH environment variable and some configuration changes to make Python look only in a specific place for packages.
There's no real downside to using a virtualenv beyond typing one extra command to activate it.
For the first time, I made an environment for Django with virtualbox and vagrant (CentOS 7).  
But every tutorial I saw says I need to use pyenv or virtualenv. I think they are used to make a virtual environment for Django. But I don't know why I need to use pyenv or virtualenv. (For example, Cakephp3 doesn't need packages like pyenv or virtualenv.)  
And I was using virtualbox and vagrant, which are already virtual environment, so I think I was making virtual environment inside another virtual environment. I am not sure if this is meaningful. Maybe pyenv and virtualenv are not necessary if I am using virtual environment like virtualbox or vmware?
Are they essential for Django? When I deploy Django in actual server, do I still need to use pyenv or virtualenv?