【问题标题】:How to use virtualenv with Python? [closed]如何在 Python 中使用 virtualenv? [关闭]
【发布时间】:2016-01-26 15:13:18
【问题描述】:

我打算为 Python 安装一个虚拟环境,以便将我的 Python 包分开。这样做的动机之一也是在我的机器(Ubuntu 14.04)上同时存在两个版本的 Python。我有以下奇迹:

  1. 应按什么顺序安装 Python、PIP 和 virtualenv?这有关系吗?
  2. 完成后,如何在 virtualenv 下保持两个 python 版本分开?
  3. 假设我正在处理单独的项目,是否建议将每个项目保存在由 virtualenv 创建的单独文件夹中?

我想知道专家的意见,以便以正确的方式和明智地做事。

【问题讨论】:

标签: python virtualenv


【解决方案1】:
  1. 您按该顺序安装它,请参阅下面的说明(尽管有其他选择)。您可以在 pip 之前使用 APT 安装 virtualenv,但是由于您安装了 pip,因此您不需要。
  2. 我现在真的不知道,但我发现了另一个可能对您有帮助的帖子:How to use pip3 with python 3.4?
  3. 强烈建议,依赖关系可能不一样,它会帮助你保持干净(例如关于版本控制)

现在,如何安装 Python 对于 Ubuntu 14.04,您将已经安装了 python2.7 和 python3,默认情况下“python”是 python2.7 的别名。

Pip 你可以安装:

sudo apt-get install python-pip python3-pip

我不知道 py2 的 pip 和 py3 的 pip 如何共存,但它们可以作为单独的包使用。

虚拟环境 您可以使用 pip 安装 virtualenv:

pip install virtualenv

这里我使用的是 python2 的 pip


一切就绪后,我会执行以下操作:

mkdir -p project_name/source
cd project_name
virtualenv env

我通常在每个项目中保持 sourceenv 名称不变,因为我有一些钩子,但我建议您替换名称,特别是“env”,因为它是知道你在哪个 VirtualEnv 中工作的关键,因为你会得到这样的东西:

(env)yser@machine:/home/user/cool_projects/project_name$

我也将 env 排除在 source 之外,以简化版本控制(无需将其标记为忽略),但这只是我自己。

激活 virtualenv:

cd project_name
source env/bin/activate

现在您可以在 VirtualEnv 中pip install。 要更改项目,请退出您当前的 VirtualEnv:

deactivate

希望对你有帮助!

【讨论】:

    【解决方案2】:

    是的,最好为每个 python 项目使用它的 virtualenv

    1- 在 venv 文件夹中创建 python virtualenv 使用:

    >>> cd [your project path]
    >>> virtualenv venv
    

    2- 您可以通过以下方式激活您的环境:

    >>> source ./venv/bin/active
    

    3- 使用 pip 安装您的需求包:

    >>> pip install -r <your requirements file>
    >>> or pip install <python module>
    

    你也可以在不激活环境的情况下安装你的需求模块

    >>> ./venv/bin/pip install <python module>
    

    4- 运行你的 python 脚本使用:

    >>> python <.py file>
    

    如果你没有激活你的环境使用:

     >>> ./venv/bin/python <.py file>
    

    如果你想管理你的 python 环境,你有 virtual wrapper

    【讨论】:

    • 你有source ./venv/bin/active,但我认为它应该只是source venv/bin/active
    • 应该是source ./venv/bin/activate 而不是source ./venv/bin/active
    【解决方案3】:

    使用 virtualenv 在 Python 程序员中很常见。 这些链接将比我的答案更有用:

    • http://docs.python-guide.org/en/latest/dev/virtualenvs/
    • http://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/

      1. 是的,这很重要。 Pip 使用 Python,但由于 Ubuntu 预装了 Python 版本(在您的情况下安装了 2 和 3),因此您不必担心这一点。但顺序是 Python -> PIP -> virtualenv。

      2. 在新的空项目文件夹中cd 后,您可以使用virtualenv -p /path/to/python/version venv 使用您选择的 Python 版本创建 virtualenv。您可以使用which python2which python3 找到路径。

      3. 如果我正确理解您的问题 - 是的。 virtualenv 的重点是将每个项目保存在一个单独的文件夹中,并设置了自己的 virtualenv。即使是一个小项目,您也会更加熟悉 virtualenv 的概念(甚至可能是 Docker 之类的容器)。

    【讨论】:

      【解决方案4】:

      我建议使用pyenv。它位于 virtualenv 之上,并提供了一种安装不同 Python(cpython、jpython、anaconda 等)的简单方法,每个 Python 都有自己的 virtualenv。您系统的 Python 可用别名 system

      【讨论】:

      • 感谢 njzk2 的链接和信息。这是我到目前为止所做的: 1. 安装了 Pip。 2. 安装了 virtualenv 3. 为了确定它是如何工作的,尝试使用:virtualenv project1_env 创建一个新的 virtualenv。我注意到的是,在 binlib 文件夹下,我看到了 python 版本 2.7。这是否意味着我只能拥有 2.7 版本,如果我想使用 python 版本 3,我该如何处理?我的下一个问题是在这个文件夹中,我需要保存我的 python 脚本吗?换句话说,'project1_env'是我需要保存我的项目文件的地方吗?提前感谢您的提示
      • 用pyenv,这个答案的建议课程,你可以安装任何你喜欢的python版本。您可以选择要运行的默认版本。但最重要的是,您可以创建本地版本。这意味着您可以导航到您的项目目录并将本地版本设置为您想要的任何版本。
      • @Yas 最后添加了 pyenv 的链接。詹姆斯描述得很好。
      【解决方案5】:

      应该按什么顺序安装 Python、PIP 和 virtualenv?可以 有关系吗?

      1. Install python
      2. Install pip
      3. Install virtualenv (with `pip install virtualenv`)
      4. Create new virtualenv
      

      如何在 virtualenv 下保持两个 python 版本分开?

      使用命令为不同的python版本创建单独的python环境:

          virtualenv -p /usr/bin/python2.7 <path/to/new/virtualenv/>
      

      假设我正在处理不同的项目,是否建议保留 每个项目都在由 virtualenv 创建的单独文件夹中吗?

      不推荐。但是,您可以将这些项目保留在一个 virtualenv 下,直到为您的项目安装的 python 包版本之间不会相互冲突

      阅读The Hitchhiker’s Guide to Python!中的Virtual Environment段落,它会回答你的很多问题!

      您也可以查看How do I install python 2.7.2 on Ubuntu?How to Install Pip on Ubuntu 以了解如何安装...

      【讨论】:

        猜你喜欢
        • 2023-04-11
        • 2017-01-15
        • 2013-03-11
        • 2013-04-10
        • 1970-01-01
        • 2014-07-13
        • 2014-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多