Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set python version when creating virtualenv using pipenv

Using a Raspberry Pi using Debian 4.14.34-v7+, I am trying to get pipenv set up with Python 3.6.5 as the default version of Python. I first install Python 3.6 by compiling it on the Pi (hours...). After making a 'robot' directory, I then install pipenv with sudo pip3 install pipenv and pipenv install --three.

Then I start the shell and open up Python, getting Python 3.5.3…

pi@raspberrypi:~/robot $ pipenv shell Spawning environment shell (/bin/bash). Use 'exit' to leave. . /home/pi/.local/share/virtualenvs/robot-XZ3Md9g0/bin/activate pi@raspberrypi:~/robot $ . /home/pi/.local/share/virtualenvs/robot-XZ3Md9g0/bin/activate (robot-XZ3Md9g0) pi@raspberrypi:~/robot $ python Python 3.5.3 (default, Jan 19 2017, 14:11:04)  [GCC 6.3.0 20170124] on linux Type "help", "copyright", "credits" or "license" for more information. >>> exit() 

I then change the virtualenv by pipenv --python 3.6, but after it correctly (apparently) installs, I immediately get the warning that pipenv still expects Python 3.5…

(robot-XZ3Md9g0) pi@raspberrypi:~/robot $ pipenv --python 3.6 Virtualenv already exists! Remove existing virtualenv? [Y/n]: y Removing existing virtualenv… Creating a virtualenv for this project… Using /usr/local/bin/python3.6m (3.6.5) to create virtualenv… ⠋Running virtualenv with interpreter /usr/local/bin/python3.6m Using base prefix '/usr/local' New python executable in /home/pi/.local/share/virtualenvs/robot-XZ3Md9g0/bin/python3.6m Also creating executable in /home/pi/.local/share/virtualenvs/robot-XZ3Md9g0/bin/python Installing setuptools, pip, wheel...done.  Virtualenv location: /home/pi/.local/share/virtualenvs/robot-XZ3Md9g0 Warning: Your Pipfile requires python_version 3.5, but you are using 3.6.5 (/home/pi/.local/share/v/r/bin/python).   $ pipenv check will surely fail. (robot-XZ3Md9g0) pi@raspberrypi:~/robot $ python Python 3.6.5 (default, May  3 2018, 11:25:17)  [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>>  

How do I set up pipenv to look for Python 3.6, when I first create the virtualenv? I can manually go in and edit the Pipfile, but that seems to be defeating the purpose of having pipenv take care of things for me.

like image 645
James Taylor Avatar asked May 03 '18 18:05

James Taylor


People also ask

How do I specify Python version in Pipenv?

And, if you want to use that local Python version, you can indicate that to Pipenv by executing: pipenv install --python 3.8. There you can see that after the pipenv shell command has been executed, the name of the virtual environment appeared between brackets at the beginning of the line.

How do I install a specific version of Python in Virtualenv?

By default, that will be the version of python that is used for any new environment you create. However, you can specify any version of python installed on your computer to use inside a new environment with the -p flag : $ virtualenv -p python3. 2 my_env Running virtualenv with interpreter /usr/local/bin/python3.


1 Answers

"Edit the Pipfile" is the right way to go if you want to change the Python version of an existing environment.

If you want to create a new environment using Python 3.6, you can run

pipenv install --python 3.6 

rather than

pipenv install --three 

and that should do the trick.

Just be certain to delete the old Pipfile(s) if you create the new environment or else the commands will fail.

like image 172
ash Avatar answered Sep 19 '22 11:09

ash