【问题标题】:how to create a venv with a different python version如何使用不同的python版本创建一个venv
【发布时间】:2022-01-22 03:10:24
【问题描述】:

我的机器中有不同的 venvs,其中我有 python 3.10。

现在对于一个特定的项目,我意识到 python 3.10 不适合,因为某些库仍然不兼容。因此,在为新项目创建新的 venv 时,我想将 python 降级到 3.8,只针对这个特定的 venv。

我该怎么做? 我应该在终端上键入什么来执行此操作?

PS:我使用VS及其终端来创建venv

【问题讨论】:

    标签: python-3.x python-venv


    【解决方案1】:

    您可以同时安装多个 python 版本,并且可以创建具有所需版本的虚拟环境。确保你已经安装了你需要的python版本,然后在创建虚拟环境时指定它的位置:

    virtualenv -p <path-to-new-python-installation> <new-venv-name>
    

    例子:

    virtualenv -p  C:\Users\ssharma\AppData\Local\Programs\Python\Python38\python.exe venv38
    

    这将使用 Python 3.8 创建一个名为 venv38 的虚拟环境。

    【讨论】:

    • 非常感谢。所以我需要任何方式来下载 python 3.8。我以为有一个像 downgrade 或 smtg 这样的命令来获取它,而无需自己手动下载。
    • 欢迎。是的,你需要下载安装python 3.8,然后基于它创建虚拟环境。
    • 我已经把自己放在我想要创建的文件夹中,我下载了我想要的 python 版本,但是当在 VS cmd 中我在上面写上你的行时,它说 virtualenv 未被识别为命令..跨度>
    • 你需要安装它:pip install virtualenv
    • 其实这已经不是推荐的方法了,查看官方python文档,venv是新标准。
    【解决方案2】:

    您可以使用“virtualenv”库来实现。可以使用命令pip install virtualenv进行安装

    然后是命令 virtualenv "name_of_your_environment" #无引号

    然后使用下面的代码来激活你的venv "name_of_your_environment"\Scripts\activate #注意您必须在您创建环境的目录中。

    它适用于 VS CODE,但我更喜欢安装 conda,然后使用 conda 在 conda 提示符下创建 env,稍后您可以访问 vs 代码,并且很容易从任何地方激活该 env,只需在 vs 终端上键入 conda activate 'name_of_your_env'

    【讨论】:

      【解决方案3】:

      我相信单独使用不同 python 版本的最佳方式是pyenv,管理虚拟环境可以使用pyenv-virtualenv

      我认为this article from Real Python 在解释如何管理不同的 python 版本以及不同的虚拟环境方面做得很好。

      对于后代,使用上面提到的工具,您可以执行以下操作(一旦安装了正确的 python 版本)

      pyenv virtualenv <python_version> <environment_name>
      
      # Then activate it 
      
      pyenv local <environment_name>
      

      现在您已经在文件夹中创建了一个虚拟环境,您应该在任何时候进入该文件夹时将其拾取。 VSCode should also pick it up,根据其文档。

      P.S:我认为这是一个好方法的原因是它允许您使用单个工具管理 python 版本和环境。每个版本只在一个地方安装一次,这应该会有所帮助,因为它降低了复杂性。

      【讨论】:

        【解决方案4】:

        python.org 推荐的方式

        自 Python 3.5 起管理虚拟环境的推荐方法是使用 Python 标准库本身中的 venv 模块。

        来源:https://docs.python.org/3/library/venv.html#creating-virtual-environments

        这与virtualenv 不同,后者是 Python 标准库之外的第三方包。

        来源:https://pypi.org/project/virtualenv/

        降级(和升级)危险

        根据您的系统本身是否使用 Python,更改系统 Python 版本可能会对系统稳定性造成危险。您的系统可能需要该版本的 Python。 Ubuntu 也是如此。

        安装另一个版本的 Python

        在同一系统上安装其他版本的 Python 比降级或升级更安全。

        例如,在 Ubuntu 20.04 中,要安装 Python 3.9:

        # Update package lists
        me@mydevice:~$ sudo apt update
        
        # Add the deadsnakes repository
        me@mydevice:~$ sudo add-apt-repository ppa:deadsnakes/ppa
        
        # Install Python 3.9
        me@mydevice:~$ sudo apt install python3.9
        

        安装venv包,创建venv虚拟环境

        # Install the venv package for Python 3.9
        me@mydevice:~$ sudo apt install python3.9-venv
        
        # Make a folder for venv virtual environments
        me@mydevice:~$ mkdir ~/.venvs
        
        # Create a new venv virtual environment with Python 3.9 in it
        me@mydevice:~$ python3.9 -m venv ~/.venvs/my-venv-name
        
        # Activate the new venv
        me@mydevice:~$ source ~/.venvs/my-venv-name/bin/activate
        (my-venv-name) me@mydevice:~$
        

        检查 venv 虚拟环境中的版本

        # Check the Python version inside the venv:
        (my-venv-name) me@mydevice:~$ python -V
        Python 3.9.9
        
        # Check the Pip version inside the venv:
        (my-venv-name) me@mydevice:~$ pip3 --version
        pip 21.2.4 from /home/me/.venvs/my-venv-name/lib/python3.9/site-packages/pip (python 3.9)
        

        停用venv虚拟环境

        (my-venv-name) me@mydevice:~$ deactivate
        me@mydevice:~$
        

        检查任何虚拟环境之外的版本

        # Check Python version:
        me@mydevice:~$ python -V
        Python 3.8.10
        
        # Check the Pip version:
        me@mydevice:~$ pip3 --version
        pip 20.0.2 from /home/me/.venvs/my-venv-name/lib/python3.8/site-packages/pip (python 3.8)
        

        安装更多 Python 版本

        要安装更多 Python 版本,只需将版本号从 3.9 更改为您选择的任何版本,该版本可从 deadsnakes 存储库中获得。

        【讨论】:

          猜你喜欢
          • 2021-06-07
          • 1970-01-01
          • 2017-05-05
          • 2020-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-03
          相关资源
          最近更新 更多