前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go两周入门系列-包管理

Go两周入门系列-包管理

作者头像
用户10002156
发布于 2023-10-04 06:14:00
发布于 2023-10-04 06:14:00
32500
代码可运行
举报
文章被收录于专栏:生活处处有BUG生活处处有BUG
运行总次数:0
代码可运行

实际项目总要依赖各种第三发开发包,各类开发语言都有自己的第三方包依赖管理工具,例如:java的maven、js的npm、php的composer等,golang在1.11版本以前官方是没有提供包依赖管理工具的,只有一些社区提供的工具,从1.11版本以后官方就提供mod模块管理工具。

下面介绍如何使用go mod管理第三方依赖包

1.升级go语言版本

目前最新的go语言版本是1.16, 如果你是最新的版本可以不用重新安装。

提示:如果你的go版本是1.11-1.13这些老版本,需要通过下面配置开启模块管理功能,新版本可以直接跳过这个章节。

通过环境变量GO111MODULE设置是否开启模块管理,GO111MODULE有三种值:

  • • off - 关闭module功能
  • • on - 打开module功能
  • • auto - 如果项目在GOPATH路径下面,不使用module功能,如果项目在GOPATH路径之外,则开启module功能。

linux/macos设置环境变量:

修改/.bash_profile或者/.bashrc文件,添加下面配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export GO111MODULE=on

使用module模块管理功能,我们就可以把项目放在任何目录。

2.初始化模块

切换到项目根目录,执行下面命令。

命令说明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go mod init 项目名

项目名,建议使用域名作为前缀,例如: xj.com/blog

说明:使用域名作为包前缀可以确保全球唯一,如果你开发的包需要开源给其他人使用,可以避免冲突。

例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 创建项目目录
mkdir blog
// 切换到blog
cd blog
// 初始化模块
go mod init xj.com/blog

初始化模块后,会在当前目录生成一个go.mod文件,这个文件记录了当前项目依赖的第三方包。

go.mod文件内容如下,目前因为还没安装依赖包,所以没有依赖包信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module xj.com/blog
  
go 1.16

提示:go.mod文件需要提交到git仓库中,方便其他开发自动安装依赖包。

3.自动分析源码,安装依赖包

经过上面步骤初始化之后,执行下面命令,会自动分析源码中的依赖包,安装缺少的依赖包。

例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 自动分析源码中的依赖,安装依赖包
go mod tidy

// 在项目根目录安装依赖包,会自动将依赖信息写入go.mod
go get github.com/jinzhu/gorm

// 运行程序
go run main.go

// 构建项目
go build

当执行上面任何命令之后,如果你打开go.mod文件,会发现多了一些依赖包的信息。

例子:

文件名:main.go

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import (
    "net/http"
    
    "github.com/labstack/echo"
)

func main() {
    e := echo.New()
    e.GET("/", func(c echo.Context) error {
        return c.String(http.StatusOK, "Hello, World!")
    })
    e.Logger.Fatal(e.Start(":1323"))
}

运行程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 自动分析源码中的依赖,安装依赖包
go mod tidy
// 执行
go run main.go

打开go.mod文件,内容类似下面:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module xj.com/blog
  
go 1.16

require (
        github.com/labstack/echo v3.3.10+incompatible // indirect
        github.com/labstack/gommon v0.3.0 // indirect
        golang.org/x/crypto v0.0.0-20191002192127-34f69633bfdc // indirect
)

4.手动安装依赖包

只要在项目目录,执行go get命令安装第三方包,会自动更新go.mod文件,将依赖信息添加进去,因此我们只要将go.mod提交到代码仓库中,其他开发者只要更新代码,运行程序,就会自动下载缺少的依赖包。

5.vendor目录

默认情况下,Go语言安装的第三方依赖包,是安装在GOPATH/src目录下面,不是安装在项目目录中,go编译器也会到GOPATH目录中查找安装包。

go语言也支持将第三方依赖包安装到项目目录中,这个目录就是vendor,如果项目的根目录下面存在vendor目录,编译器优先到vendor目录中查找依赖包。

下面是go module的命令,可以一键创建vendor目录,将依赖包复制进去。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 在项目根目录执行
go mod vendor

命令执行成功后,项目根目录多了一个vendor目录,里面包含我们项目依赖的所有第三方包。

参考:https://www.tizi365.com/

Go两周入门系列

Go两周入门系列-Golang介绍

Go两周入门系列-go语言开发环境

Go两周入门系列-基本数据类型

Go两周入门系列-运算符

Go两周入门系列-指针

Go两周入门系列-流程控制语句

Go两周入门系列-函数

Go两周入门系列-数组和切片(slice)

Go两周入门系列-结构体(struct)

Go两周入门系列-Interface接口

Go两周入门系列-map类型

Go两周入门系列-包(package)

我有个大胆的想法

小伙伴在平常有没有遇到以下这种情况:遇到技术难题时,网上教程一堆堆,优秀的很多,但也有很多是过时的,或者是copy来copy去,甚至错别字都没改。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-03 23:56,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生活处处有BUG 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python实现定时任务的几种方法
该方法能够执行固定间隔时间的任务,时间间隔由time.sleep()的睡眠时间指定。
Steve Wang
2021/12/20
3.9K0
Python 定时任务的实现方式
目前所在的项目组需要经常执行一些定时任务,之前都是用 Node.JS 的 cron来实现 schedule job。可是这次需要连接不同的 DB,而且实现的逻辑也有些许不同,于是选择使用 Python 的定时器。
李振
2021/11/26
1.6K0
Python 定时任务的实现方式
Python任务调度模块 – APScheduler,Flask-APScheduler实现定时任务
  看代码,定义一个函数,然后定义一个scheduler类型,添加一个job,然后执行,就可以了,代码是不是超级简单,而且非常清晰。看看结果吧。
用户1214487
2018/07/31
4.8K0
Python任务调度模块 – APScheduler,Flask-APScheduler实现定时任务
Python定时任务(下)
上篇文章,我们了解到有三种办法能实现定时任务,但是都无法做到循环执行定时任务。因此,需要一个能够担当此重任的库。它就是 APScheduler。
猴哥yuri
2018/08/16
2K0
Python定时任务
1、第一种办法是最简单又最暴力。那就是在一个死循环中,使用线程睡眠函数 sleep()。
周小董
2019/03/25
5.8K0
Python定时任务
python定时任务最强框架APScheduler详细教程
上次测试女神听了我的建议,已经做好了要给项目添加定时任务的决定了。但是之前提供的四种方式中,她不知道具体选择哪一个。为了和女神更近一步,我把我入行近10年收藏的干货免费拿出来分享给女神,希望女神凌晨2点再找我的时候,不再是因为要给他调程序了。
无涯WuYa
2020/07/15
8.3K0
python定时任务最强框架APScheduler详细教程
高效定时任务处理:深入学习Python中APScheduler库的奥秘
APScheduler是Python中一个强大的第三方库,用于在后台执行定时任务。它允许我们根据设定的时间间隔、日期规则或特定时间来执行任务,适用于定时执行脚本、定时发送邮件、定时处理数据等场景。APScheduler的功能使得在Python中实现定时任务变得非常简单和高效。本文将从入门到精通地介绍APScheduler库的使用方法,带你掌握在Python中实现定时任务的技巧。
子午Python
2023/08/14
3.3K0
Python定时任务框架之Apscheduler 案例分享
  前面已经讲过Celery做定时任务的场景,现在分享另一个框架Apscheduler。Apscheduler的全称是Advanced Python Scheduler。它是一个轻量级的 Python 定时任务调度框架。同时,它还支持异步执行、后台执行调度任务。本人小小的建议是一般项目用APScheduler,因为不用像Celery那样再单独启动worker、beat进程,而且API也很简洁。
全栈测试开发日记
2023/02/02
1.8K0
Python定时任务框架之Apscheduler 案例分享
Python下定时任务框架APSched
今天准备实现一个功能需要用到定时执行任务,所以就看到了Python的一个定时任务框架APScheduler,试了一下感觉还不错。
py3study
2020/01/08
1.5K0
轻量级python定时器apscheduler
cron也有缺点: 1、不适合复杂的定时任务 2、定时任务修改,需要重启crontab管理 3、定时任务,没有状态存储,也不是知道是否执行了
测试加
2022/04/27
1.1K0
轻量级python定时器apscheduler
Python定时任务神器-APScheduler
但是这些定时任务库都只是提供了简答的,或者只支持静态的定时任务。而对于需要复杂定时功能,或者动态注册定时任务的场景,则无法满足。
上帝De助手
2019/09/17
3.1K0
Python中定时任务框架APScheduler入门
如果对Python的环境搭建及模块安装还不熟悉,可以看看我写的另一篇博客 Python环境搭建及模块安装 。
Qwe7
2022/03/17
9700
python定时模块:apscheduler
其中 BlockingScheduler是阻塞性的调度器,是最基本的调度器,下面调用 start方法就会阻塞当前进程,所以如果你的程序除了调度进程没有其他后台进程,那么是可以是否的,否则这个调度器会阻塞你程序的正常执行。
悟乙己
2021/12/07
9330
python定时模块:apscheduler
Flask 学习-86.Flask-APScheduler 创建定时任务
Flask-APScheduler是根据APScheduler编写的一个flask模块,它提供了API管理任务。
上海-悠悠
2023/01/03
2.2K0
Apscheduler时间调度程序——python定时任务
APScheduler的全称是Advanced Python Scheduler。它是一个轻量级的 Python 定时任务调度框架。APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令。同时,它还支持异步执行、后台执行调度任务。
SingYi
2022/07/14
1.2K0
Python任务调度模块APSched
官网文档:http://apscheduler.readthedoc... API:http://apscheduler.readthedoc...
py3study
2020/01/06
1.1K0
【Python】APScheduler简介
APScheduler,全称是_Advanced Python Scheduler_,具体的介绍可以看PyPI或者readthedocs的文档介绍,这篇 blog 主要是翻译User Guide一节的主要内容,不过惯例还是先简单介绍一下这个库特别的地方。
用户5522200
2020/05/11
2.8K0
python定时任务:apscheduler的使用
APScheduler基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。基于这些功能,我们可以很方便的实现一个python定时任务系统。
KEVINGUO_CN
2020/03/17
1.3K0
Python 实现定时任务的八种方案!
来源:https://www.biaodianfu.com/python-schedule.html
Python编程与实战
2021/10/12
34.3K0
python apscheduler
apscheduler分为4个模块,分别是Triggers,Job stores,Executors,Schedulers.
onety码生
2020/10/28
4070
相关推荐
Python实现定时任务的几种方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验