11
votes

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?

3
maybe create a new virtual environment? - Vadim

3 Answers

13
votes

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.

6
votes

Here is how I switched from 3.9.0a5 to 3.9.0:

$ pip freeze > requirements-lock.txt
$ pyenv virtualenv-delete a-virtualenv-name
$ pyenv virtualenv 3.9.0 a-virtualenv-name
$ pip install -r requirements-lock.txt
$ rm requirements-lock.txt

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.

0
votes

If you use anaconda, just type

conda install python==$pythonversion$