Can existing virtualenv be upgraded gracefully?
Question:
I have a virtualenv created for Python 2.5 and want to “upgrade” it to Python 2.6.
Here is how it was originally set up:
virtualenv --no-site-packages -p python2.5 myenv
I now run virtualenv in the same directory to upgrade:
virtualenv --no-site-packages -p python2.6 myenv
...
Not overwriting existing python script myenv/bin/python (you must use myenv/bin/python2.6)
...
Overwriting myenv/bin/activate with new content
The default python is still 2.5, even though I can also specify 2.6. Is there any way to remove 2.5 entirely and have ‘bin/python’ point to 2.6 instead?
Answers:
You should create a new virtualenv
using python2.6
and then, after activating the new env, use its python2.6
and its easy_install
to install new versions of any site packages you need. Beware that the path name to the virtualenv
is hardwired into various files within the environment, so, when you are ready to switch over to it, either change your startup scripts et al to refer to the new virualenv
path or be very careful about copying it over to the old directory and modifying the path names inside it.
You can use the Python 2.6 virtualenv to “revirtual” the existing directory. You will have to reinstall all the modules you installed though. I often have a virtual directory for developing a module, and virtualenv the same directory with many versions of Python, and it works just fine. 🙂
Install a second Python on CentOS
- download python
-
install to diff local
configure --prefix=/opt/virtualenv/python
make && make install
-
create virtual env using new python
virtualenv /opt/virtualenv --python=/opt/python276/bin/python
note: if needed it can be done with a different user
chown pyuser -R /opt/virtualenv
su - pyuser
source /opt/virtualenv/bin/activate
python -v
-
Create virtual env:
virtualenv /opt/virtualenv
su - infograficos
source bin/activate
-
Install pip with python 2.7 (inside virtualenv)
easy_install pip
If you’re using OS X, try this if you want to upgrade Python to a minor-increased version (e.g. 2.7.6 to 2.7.8) while keeping third-party libraries work.
It work for me on 5 different virtual environments with Django installed.
In Python 3.3+ venv supports –upgrade flag
--upgrade Upgrade the environment directory to use this version
of Python, assuming Python has been upgraded in-place.
Usage:
python -m venv --upgrade YOUR_VENV_DIRECTORY
I just upgraded my venv from Python 3.7.x to 3.8 on several projects without any issue.
You can simply do this by go to your venv file and change the python path and it’s version from pyvenv.cfg like this:enter image description here
I have a virtualenv created for Python 2.5 and want to “upgrade” it to Python 2.6.
Here is how it was originally set up:
virtualenv --no-site-packages -p python2.5 myenv
I now run virtualenv in the same directory to upgrade:
virtualenv --no-site-packages -p python2.6 myenv
...
Not overwriting existing python script myenv/bin/python (you must use myenv/bin/python2.6)
...
Overwriting myenv/bin/activate with new content
The default python is still 2.5, even though I can also specify 2.6. Is there any way to remove 2.5 entirely and have ‘bin/python’ point to 2.6 instead?
You should create a new virtualenv
using python2.6
and then, after activating the new env, use its python2.6
and its easy_install
to install new versions of any site packages you need. Beware that the path name to the virtualenv
is hardwired into various files within the environment, so, when you are ready to switch over to it, either change your startup scripts et al to refer to the new virualenv
path or be very careful about copying it over to the old directory and modifying the path names inside it.
You can use the Python 2.6 virtualenv to “revirtual” the existing directory. You will have to reinstall all the modules you installed though. I often have a virtual directory for developing a module, and virtualenv the same directory with many versions of Python, and it works just fine. 🙂
Install a second Python on CentOS
- download python
-
install to diff local
configure --prefix=/opt/virtualenv/python make && make install
-
create virtual env using new python
virtualenv /opt/virtualenv --python=/opt/python276/bin/python
note: if needed it can be done with a different user
chown pyuser -R /opt/virtualenv su - pyuser source /opt/virtualenv/bin/activate python -v
-
Create virtual env:
virtualenv /opt/virtualenv su - infograficos source bin/activate
-
Install pip with python 2.7 (inside virtualenv)
easy_install pip
If you’re using OS X, try this if you want to upgrade Python to a minor-increased version (e.g. 2.7.6 to 2.7.8) while keeping third-party libraries work.
It work for me on 5 different virtual environments with Django installed.
In Python 3.3+ venv supports –upgrade flag
--upgrade Upgrade the environment directory to use this version
of Python, assuming Python has been upgraded in-place.
Usage:
python -m venv --upgrade YOUR_VENV_DIRECTORY
I just upgraded my venv from Python 3.7.x to 3.8 on several projects without any issue.
You can simply do this by go to your venv file and change the python path and it’s version from pyvenv.cfg like this:enter image description here