Set python version when creating virtualenv using pipenv

六眼飞鱼酱① 提交于 2019-12-10 02:33:48

问题


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

SO - the question - 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.


回答1:


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




回答2:


When setting up your pipenv you can specify the version of Python by using: pipenv --python 3.6, to use Python3.6.

Editing the Pipfile also works, by changing:

[requires] python_version = "3.6.6"

to the specific version of Python you want.

If you did all of this and are still having trouble with accessing the correct version of Python from within pipenv shell then you might want to check your .bashrc file to be sure that you don't have an alias for a specific version of Python.




回答3:


If you want to create a virtual environment for your project the answers above might not work for you. For instance, if you have multiple versions of python installed and you had to rename the executables like I had to in the below example, OR you might want to create virtual environments using different python versions.

When creating virtual environments for your projects, you can more specific and specify the path of the python executable.

Remember to run the below command relative to the project folder.

pipenv install --python 'C:\Python373\python373.exe'


来源:https://stackoverflow.com/questions/50161551/set-python-version-when-creating-virtualenv-using-pipenv

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!