user3595632
user3595632

Reputation: 5730

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?

Upvotes: 42

Views: 44876

Answers (4)

phd
phd

Reputation: 94397

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 finds a universal wheel in its cache it installs the package from the cache. Other packages will be downloaded, cached, built and installed.

Upvotes: 10

cglacet
cglacet

Reputation: 10912

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 install -s 3.9.0
pyenv virtualenv 3.9.0 venv-name
pyenv activate 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 safe.

Upvotes: 48

Keto
Keto

Reputation: 2177

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).

Upvotes: 9

JaeWoo So
JaeWoo So

Reputation: 576

If you use anaconda, just type

conda install python==$pythonversion$

Upvotes: -5

Related Questions