【问题标题】:Do we need to upload virtual env on github too?我们是否也需要在 github 上上传虚拟环境?
【发布时间】:2019-01-22 14:14:58
【问题描述】:

这是我的 GitHub 存储库 https://github.com/imsaiful/backmyitem

我从本地机器推送并拉取 Amazon EC2 中的更改。 早些时候我没有在我的仓库中添加虚拟环境文件,但现在我已经更改了管理目录中包含在虚拟环境中的一些文件。那么我应该在我的 GitHub 上添加虚拟环境还是手动更改远程服务器上的相同内容?

【问题讨论】:

  • 通常添加requirements文件等,然后根据这些要求(和其他细节)构建环境。

标签: python django amazon-web-services amazon-ec2


【解决方案1】:

正如评论中提到的,通过requirements.txt 文件而不是包含 virtualenv 本身是标准的。

您可以使用以下内容轻松生成此文件: pip freeze > requirements.txt 然后,您可以使用以下命令在目标计算机上安装 virtualenv 包: pip install -r requirements.txt

请务必注意,包含 virtualenv 通常根本不起作用,因为它可能包含本地系统的完整路径。最好使用requirements.txt 文件。

【讨论】:

  • 我认为它会安装虚拟环境,但不会添加我在本地 repo 虚拟环境中所做的更改。
  • @imsaiful:有什么变化?通常,venv 的想法是您不会进行(太多)更改。
  • 您指的是您对 virtualenv 包所做的更改吗?如果是这样,那可能是相当具有挑战性的。要么找到一种不需要更改包的方法(通过覆盖或更新或其他方式),要么为包的存储库分支,自己进行编辑和管理更新。不幸的是,Python 并不一定希望您更改您的 virtualenv 包,并且没有一个简单的解决方案。
【解决方案2】:

不 - 尽管环境是 100% 存在的,但如果其他人将其拉下路径环境尚未导出,更不用说 Python 版本差异可能会突然出现。

最好的办法是创建所谓的requirements.txt 文件。

创建环境后,您可以pip install thispip install that。您将开始构建许多项目特定的依赖项。

一旦你开始建立一些项目依赖,我会冻结你的本地python环境(类似于用于node.js包依赖管理的package.json )。我建议在您的终端中执行以下操作:

(local_python_environment) $ pip install django && pip freeze > requirements.txt

(local_python_environment) $ pip install requests && pip freeze > requirements.txt

也就是说,每次安装新的依赖项时,将你的环境冻结为一个 requirements.txt 文件。

一旦合作者拉下您的项目 - 他们就可以安装新的 python 环境:

$ python3 -m venv local_python_environment

(* 请使用 Python 3 而不是 Python 2!)

然后激活该环境并从包含在版本控制中的 requirements.txt 进行安装:

$ source local_python_environment/bin/activate

(local_python_environment) $ pip install -r requirements.txt

排除您的虚拟环境可能类似于忽略 node_modules! :)

【讨论】:

  • 但是我已经更改了 virtual virtual env /home/imsaiful/Desktop/local_repo/myvenv/lib/python3.6/site-packages/django/contrib/admin/templates 目录中的一些文件。如何在那里反映这种变化?
【解决方案3】:

你应该在你的 gitignore 中添加 virtualenv。事实上 github 有一个推荐的 python 格式,哪些文件应该添加,哪些不应该

Github recommendation for gitignore

【讨论】:

  • 但我也在我的开发中对我的虚拟环境文件进行了更改。在 Amazon Ec2 中很难做到同样的事情。我在这个目录 /home/username/Desktop/local_repo/virtual_env/lib/python3.6/site-packages/django/contrib/admin/templates 中更改了一些代码跨度>
【解决方案4】:

No 不需要在 github 上上传 virtualenv 文件。甚至有时当您将代码推送到 github 时,它仅在添加到忽略时才会忽略 python 文件。

虚拟环境 基本上,虚拟环境只不过是一个工具,它通过为不同项目创建隔离的 python 虚拟环境来帮助保持不同项目所需的依赖关系。这是大多数 Python 开发人员使用的最重要的工具之一。除此之外,您还可以将 requirements.txt 文件添加到您的项目中。

Requirement.txt 该文件告诉我们运行该应用程序需要哪个库和应用程序。您可以使用这个简单的命令添加 requirements.txt 文件。

 pip freeze > requirements.txt

运行此命令后,所有应用程序和库都添加到此文件中。如果你在没有激活任何 virtualenv 的情况下创建项目,那么 python 会自动使用系统环境变量,它还会添加你的项目不需要的所有文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2019-06-13
    相关资源
    最近更新 更多