How can I upgrade Python version and packages in pyenv virtualenv?


I used pyenv, pyenv-virtualenv for managing python virtual environment.

I have a project working in Python 3.4 virtual environment.

So all installed packages(pandas, numpy etc) are not newest version.

What I want to do is to upgrade Python version from 3.4 to 3.6 as well as upgrade other package version to higher one.

How can I do this easily?

Asked By: user3595632



If you use anaconda, just type

conda install python==$pythonversion$

Answered By: JaeWoo So

Use pip freeze > requirements.txt to save a list of installed packages.

Create a new venv with python 3.6.

Install saved packages with pip install -r requirements.txt. When pip founds an universal wheel in its cache it installs the package from the cache. Other packages will be downloaded, cached, built and installed.

Answered By: phd

Here is how you can switch to 3.9.0 for a given virtual environement venv-name:

pip freeze > requirements-lock.txt
pyenv virtualenv-delete venv-name
pyenv virtualenv 3.9.0 venv-name
pip install -r requirements-lock.txt

Once everything works correctly you can safely remove the temporary requirements lock file:

rm requirements-lock.txt

Note that using pip freeze > requirements.txt is usually not a good idea as this file is often used to handle your package requirements (not necessarily pip freeze output). It’s better to use a different (temporary) file just to be sure.

Answered By: cglacet

OP asked to upgrade the packages alongside Python. No other answers address the upgrade of packages. Lock files are not the answer here.

Save your packages to a requirements file without the version.

pip freeze | cut -d"=" -f1 > requirements-to-upgrade.txt

Delete your environment, create a new one with the upgraded Python version, then install the requirements file.

pyenv virtualenv-delete venv-name
pyenv virtualenv 3.6.8 venv-name
pip install -r requirements-to-upgrade.txt

The dependency resolver in pip should try to find the latest package. This assumes you have the upgrade Python version installed (e.g., pyenv install 3.6.8).

Answered By: Keto
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.