【问题标题】:Understanding pip, virtualenv and packages了解 pip、virtualenv 和包
【发布时间】:2017-02-04 20:43:20
【问题描述】:

我对正在发生的事情有点困惑,但我可能只是误解了 virtualenv 的工作原理。

首先,我发现我遇到了错误,因为我的 git 文件夹的路径中有空格。从路径中删除空格后,我创建了一个新的 virtualenv,然后当激活的 pip 列表开始正常工作时 - 显示了安装到 site-packages 目录中的内容。请注意,我没有使用 --no-site-packages 创建 venv,也没有使用 pip freeze 创建 requirements.txt。

这就是混乱开始的地方......

在家里,我 git pull 同步起来,我看到了新的 venv 文件夹,但是:

  1. 激活 venv 并使用 pip list 不会显示在工作中/安装到 repo 中的包。
  2. 例如,PyQt 文件夹的大小还不到原来的一半。注意 QT 本身是在工作中安装的,而不是在家里安装的(显然是独立安装,而不是 pip)。另一个例子是 openpyxl。文件夹在那里,但在 pip 列表中没有提及。

是否存在 pip freeze 是因为在单独的计算机上进行设置意味着您需要全局安装 requirements.txt 中列出的内容(如果我创建了一个)?我认为 venv 将包含所有内容,并且不需要安装软件包,因为它们已经在文件夹中。

我知道它在 virtualenv 文档中提到 gitignore env,但我不明白为什么。而且我听说在回购中更容易拥有它。除非当然这是一个禁忌,因此我的麻烦。

我希望能得到一些指导,了解如何最好地将 pip、venv 和 git 一起用于使用多台计算机(当然还有多人)。你会认为谷歌搜索会解决这个问题,但到目前为止,我还没有找到这些细节。

谢谢

【问题讨论】:

    标签: python pip virtualenv


    【解决方案1】:

    根据我的经验,跨多台计算机管理 Python 项目的最佳方法不是尝试将 pip 包或 virtualenv 安装与您的程序一起分发,因为这可能会导致各种问题。实际上,我什至不确定您尝试做的事情是否可行。相反,我会推荐以下内容:

    1. 通过将 env 添加到您的 .gitignore 文件中,从您的 git 存储库中排除您的 virtualenv 安装。

    2. 运行pip freeze > requirements.txt,将所有需要的包写入requirements.txt

    3. 在您需要运行该程序的任何其他计算机上,运行 pip install -r requirements.txt 以安装所需的软件包。

    这种方法除了非常简单之外,还让您(以及可能想要运行您的程序的任何其他人)可以灵活地设置他们想要的本地 Python 环境。

    【讨论】:

      【解决方案2】:

      首先,我不是设置这方面的专家,但这里是。

      Git 是版本控制的。您可以使用 git 对文件和文件更改进行快照。与设置检查点一样,监控和跟踪的重要性已通过版本控制完成和更改。

      Virtualenv 只是一个虚拟环境。就像设置服务器一样,您正在设置 Python 的虚拟环境。

      通过 virtualenv,您可以设置使用哪个版本的 python/pip。 pip 是一个包管理系统。它可以帮助您提取所需的包及其所有依赖项。 如果图书馆需要其他项目,那么它也会被拉出。 这种类型的“图书馆管理”支持多种语言。

      使用 virtualenv,你可以指定你想使用什么; python2.7 或 3.5,或任何你需要的版本,只要它在使用它的机器上。

      在你激活你的 virtualenv 之后,你可以 pip 安装你需要的库。当然,当您在该项目中激活该 virtualenv 时,这些库是特定的。

      requirement.txt 文件只是一个对您“pip install”编辑的内容进行快照的地方。您可以将该文件传输到另一个项目并将这些库安装在其他位置。或者,您可以使用 git 将这些库放入存储库中,但您可能会遇到问题。

      就我个人而言,我认为没有 virtualenv 就无法工作。我的一个项目可能需要 python2.7,另一个我看到需要 python3.4,所以它可以让你灵活地使用它。

      此外,在设置您的服务器(apache 或 nginx)时,您需要指出您的站点需要使用什么 virtualenv 来运行。

      关于所有这些设置,我只是一个新手,但喜欢 python 和 django。

      我希望我已经做到了这一点。 快乐编码

      有关更详细的配置和说明,请参阅以下文档。

      [https://virtualenv.pypa.io/en/stable/][1]

      [https://github.com/pypa/pip][1]

      [https://git-scm.com/book/en/v2/Getting-Started-Git-Basics][1]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-17
        • 2016-04-02
        • 2011-03-18
        • 2011-11-27
        • 2018-09-11
        • 2016-04-24
        • 1970-01-01
        相关资源
        最近更新 更多