使用 pipenv 创建 virtualenv 时设置 python 版本

Set python version when creating virtualenv using pipenv

使用使用 Debian 4.14.34-v7+ 的 Raspberry Pi,我试图让 pipenv 设置 Python 3.6.5 作为 [=30= 的默认版本].我首先通过在 Pi 上编译安装 Python 3.6(小时......)。创建 'robot' 目录后,我安装 pipenvsudo pip3 install pipenvpipenv install --three.

然后我启动 shell 并打开 Python,得到 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()

然后我将 virtualenv 更改为 pipenv --python 3.6,但在它正确(显然)安装后,我立即收到 pipenv 仍然期望 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.
>>> 

如何设置 pipenv 以查找 Python 3.6,当我第一次创建 virtualenv 时?我可以手动进入并编辑 Pipfile,但这似乎违背了 pipenv 为我处理事情的目的。

如果您想更改现有环境的 Python 版本,

"Edit the Pipfile" 是正确的方法。

如果您想使用 Python 3.6 创建一个 环境,您可以 运行

pipenv install --python 3.6

而不是

pipenv install --three

这应该可以解决问题。

如果您创建新环境,请务必删除旧的 Pipfile,否则命令将失败。

设置 pipenv 时,您可以使用 Python 指定版本:pipenv --python 3.6,以使用 Python3.6.

编辑 Pipfile 也有效,方法是更改​​:

[requires] python_version = "3.6.6"

到您想要的 Python 的特定版本。

如果您完成了所有这些操作,但仍然无法从 pipenv shell 中访问 Python 的正确版本,那么您可能需要检查 .bashrc 文件以确保Python.

的特定版本没有 alias

如果您想为项目创建虚拟环境,上述答案可能不适合您。例如,如果您安装了 python 的多个版本,并且必须像我在下面的示例中那样重命名可执行文件,或者对于同一个项目,您可能希望创建使用不同 python 的虚拟环境] 版本。

为您的项目创建虚拟环境时,您可以更具体地指定 python 可执行文件的路径。

请记住 运行 相对于项目文件夹的以下命令。

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

我建议你两种方法:

  1. pip install --python 3.7 <your desired version number to be replaced>

(这需要安装 asdf 或 pyenv。如果您没有安装它们,请继续阅读!)

  1. 手动方法。(适用于Linux)(获胜请参考@Ryner的回答!)
  • 从 python.org 下载 python gzip 并将其解压缩到一个文件夹,cd 到它。

  • 点击以下

     ./configure
    
     make 
    
     sudo make install
    
  • 现在您已经在本地安装了 python 版本,您要做的就是第一步。

pipenv install --python <version-u-installed>

注意:如果无论如何,如果你想卸载,去你执行make的目录,然后简单地点击make uninstall

希望对您有所帮助!编码愉快!