【问题标题】:Set python version when creating virtualenv using pipenv使用 pipenv 创建 virtualenv 时设置 python 版本
【发布时间】:2018-10-14 03:38:38
【问题描述】:

使用使用 Debian 4.14.34-v7+ 的 Raspberry Pi,我正在尝试将 Python 3.6.5 设置为 pipenv 作为 Python 的默认版本。我首先通过在 Pi 上编译 Python 3.6 来安装它(小时...)。创建一个“机器人”目录后,我安装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.
>>> 

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

【问题讨论】:

    标签: python-3.x pipenv


    【解决方案1】:

    如果您想更改现有环境的 Python 版本,“编辑 Pipfile”是正确的方法。

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

    pipenv install --python 3.6
    

    而不是

    pipenv install --three
    

    这应该可以解决问题。

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

    【讨论】:

    • 然后简单地忽略警告Your Pipfile requires python_version 3.5, but you are using X (...) pipenv check will surely fail.
    【解决方案2】:

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

    编辑Pipfile 也可以,通过更改:

    [requires] python_version = "3.6.6"

    到您想要的特定 Python 版本。

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

    【讨论】:

    • 这需要编辑 Pipfile,可能是版本等。python_version 不接受范围或多个版本(可以按优先顺序指定)。考虑使用 poetry 而不是 pipenv 以获得对 Python 版本的更好支持。
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 也适用于 ubuntu:pipenv install --python '/usr/bin/python3.7' 谢谢
    【解决方案4】:

    我建议你两种方法:

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

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

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

    • 点击以下

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

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

    注意:任何情况下,如果要卸载,请转到执行make的目录,然后点击make uninstall

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

    【讨论】:

      猜你喜欢
      • 2015-02-22
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 2018-07-18
      • 1970-01-01
      • 2021-04-23
      相关资源
      最近更新 更多