【python学习】思考-python分发和提交到git的区别以及用venv、pycharm以及conda创建虚拟环境的区别

引言

Python中有分发模块,平常使用的是git提交代码,两者有什么区别呢?
Python模块的分发和将其提交到Git仓库(如GitHub、GitLab等)主要有以下区别:

python分发和提交到git的区别

一、目的

1.1 Python模块分发

目的是为了方便用户安装和使用模块。分发后的模块可以通过包管理工具(如pip)轻松安装到用户的Python环境中

1.2 提交到Git

目的是为了代码的版本控制、共享、备份和协作。提交到Git仓库可以让其他开发者查看、贡献或克隆项目代码

二、使用方式

2.1 Python模块分发

用户通常通过包管理工具来安装和使用模块。例如,使用pip install module_name来安装模块

2.2 提交到Git

开发者通常会克隆(git clone)或派生(git fork)仓库到本地,然后在本地环境中进行开发、测试和修改

三、工作流程

3.1 Python模块分发

  1. 编写代码:开发一个Python模块,通常包含一系列的类、函数和属性。
  2. 定义元数据
    • 创建setup.pysetup.cfg文件,其中包含模块的名称、版本、作者、描述、依赖等信息。
    • 定义pyproject.toml(如果使用PEP 517/518)。
  3. 编写文档
    • 准备README文件,说明模块的用途、安装方法、使用示例等。
    • 编写详细的文档,可能包括用户指南、API参考等。
  4. 打包
    • 使用setuptoolswheel等工具将模块打包成.whl.tar.gz格式。
  5. 上传到PyPI
    • 使用twine工具上传打包好的文件到Python Package Index (PyPI)。
  6. 版本管理
    • 确定遵循语义化版本控制(SemVer),以便用户理解版本变更的影响。
  7. 用户安装
    • 用户通过pip install module_name命令安装模块。

3.2 提交到Git

  1. 初始化仓库
    • 在项目目录下运行git init创建新的Git仓库。
  2. 跟踪文件
    • 使用git add命令跟踪项目文件。
  3. 提交更改
    • 使用git commit提交更改,并添加描述性的提交信息。
  4. 分支管理
    • 使用git branch创建分支,git checkout切换分支,便于并行开发。
  5. 远程同步
    • 使用git remote add添加远程仓库,git push将本地更改推送到远程。
  6. 协作开发
    • 使用git pull获取远程仓库的最新更改,git merge合并分支。
  7. 版本历史
    • Git记录了所有提交的历史,便于回溯和审查。

四、用户交互

4.1 Python模块分发

用户通常不需要关心代码是如何被开发的,他们只关心如何安装和使用模块。

4.2 提交到Git

用户(尤其是其他开发者)可能会关心代码的历史、变更、分支和贡献流程

五、依赖管理

5.1 Python模块分发

依赖通常在setup.pypyproject.toml中定义,并在安装时通过pip自动解决

5.2 提交到Git

依赖可能通过requirements.txt文件或其他依赖管理工具(如Pipfile)来管理,用户需要手动安装这些依赖

六、示例场景

6.1 Python模块分发

当开发了一个库,并希望让其他开发者或项目使用这个库时,会选择分发它

6.2 提交到Git

当正在进行一个项目,并希望与其他开发者协作、跟踪代码变更或备份代码时,会选择将其提交到Git

总结来说,Python模块的分发主要是为了方便用户安装和使用,而提交到Git则是为了代码的版本控制和协作开发,但两者可以互为补充,比如,可以将模块代码托管在Git上,同时将其分发给用户


venvPycharm以及conda创建虚拟环境的区别

一、使用 venv 创建独立的Python环境

1.1 用venv创建虚拟环境

  1. 安装Python
    确保你的系统中安装了Python 3(Python 3.3及以上版本内置了venv模块)

  2. 打开命令行
    – 在Windows上,你可以使用命令提示符或PowerShell
    – 在macOS或Linux上,你可以使用终端

  3. 创建虚拟环境
    使用以下命令创建一个新的虚拟环境:

    python -m venv myenv
    

    这将在当前目录下创建一个名为myenv的新目录,其中包含了独立的Python解释器和标准库

  4. 激活虚拟环境
    – 在Windows上:

    myenv\Scripts\activate
    

    – 在macOS或Linux上:

    source myenv/bin/activate
    

    激活虚拟环境后,你的命令行提示符会变化,通常会前置虚拟环境的名字。

  5. 使用虚拟环境
    激活虚拟环境后,你可以使用pip安装包,这些包会被安装到虚拟环境中,不会影响系统全局的Python环境。

1.2 简便方法

  • 一键创建并激活
    可以将创建和激活虚拟环境的命令放在一个命令中执行:

    python -m venv myenv && source myenv/bin/activate
    

    在Windows上,则使用:

    python -m venv myenv && myenv\Scripts\activate
    
  • 使用脚本
    创建一个简单的脚本来创建和激活虚拟环境,这样你就可以通过运行一个命令来重复这个过程

二、用venv创建虚拟环境与其他工具(如conda)的区别

2.1 venv vs conda

  • venv是Python标准库的一部分,而conda是Anaconda或Miniconda的一部分,它提供了更广泛的包管理和环境管理功能
  • conda可以管理Python和非Python包,而venv只能管理Python包
  • conda环境可以更方便地管理不同版本的Python

在这里插入图片描述

2.2 venv vs pycharm

  • venv专注于虚拟环境管理,而PyCharm是一个全面的IDE,提供从代码编写到调试的全套开发工具
  • venv是命令行工具,PyCharm提供了图形界面
  • PyCharm内置了对venv的支持,可以直接在IDE中创建、管理和使用虚拟环境,而 venv需要在命令行中手动操作
  • PyCharm功能更全面,但相应的学习曲线也更陡峭。venv则相对简单,易于上手
  • PyCharm作为IDE,相比纯命令行工具venv,通常需要更多的系统资源
    在这里插入图片描述

总的来说:
1、venv是一个轻量级、易于使用的工具,非常适合快速创建独立的Python环境以及隔离Python环境的场景;PyCharm是一个功能强大的IDE,适用于全面的Python项目开发;conda是一个强大的包和环境管理工具
2、对于大多数基本用途,venv已经足够好了,但如果需要更复杂的环境管理或依赖管理,可以考虑使用condaPyCharm等其他工具

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 10:22:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 10:22:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 10:22:03       45 阅读
  4. Python语言-面向对象

    2024-07-21 10:22:03       55 阅读

热门阅读

  1. CyclicBarrier循环栅栏介绍和使用

    2024-07-21 10:22:03       13 阅读
  2. Python常用的数据类型

    2024-07-21 10:22:03       12 阅读
  3. Android笔试面试题AI答之控件Views(1)

    2024-07-21 10:22:03       15 阅读
  4. 【音视频】音频重采样

    2024-07-21 10:22:03       17 阅读
  5. IEEE论文发布

    2024-07-21 10:22:03       20 阅读
  6. 【CSS】基本用法

    2024-07-21 10:22:03       16 阅读
  7. 塔子哥的循环序号-美团2023笔试(codefun2000)

    2024-07-21 10:22:03       16 阅读
  8. sqlalchemy事件监听

    2024-07-21 10:22:03       14 阅读
  9. Nuxt.js与Serverless:构建无服务器应用

    2024-07-21 10:22:03       15 阅读
  10. 九、运算符重载

    2024-07-21 10:22:03       14 阅读