在mac上安装好python开发环境(pyenv、pyenv-virtualenv、docker-desktop、mysql5.7),一文解决环境问题

前言

python各种版本管理器、包管理器实在是太多了,感兴趣的可以看我的另一篇博客:http://t.csdnimg.cn/SRRyC

但是说实话,建议不要看,直接入手本文如下的环境配置就好了。

保证都是比较前沿,运用范围都比较广的(本人踩过太多坑啦,服辣!

另外本文都是macOs Intel系统,建议win找另外的博客。而且至少保证环境安装了homebrew,如果没有,请看本人的另一篇博客:http://t.csdnimg.cn/FVuHa
最后,本篇文章其实90%都来自于一位同事在公司内部的分享,真的写得太好了,分享给大家而已hhh,填原创是因为转载需要填写原文地址。让我们一起感谢刘先生捏🙏

Python版本管理器-Pyenv

pyenv可以轻松切换全局解释器版本, 同时结合vitualenv插件可以方便的管理对应的包源.

bash 复制代码
brew install pyenv

根据自身环境,将下方内容加到对应文件中: .bashrc / .zshrc

bash 复制代码
export PYENV_ROOT=/usr/local/var/pyenv
export PATH="$PYENV_ROOT/bin:$PATH"
export PATH="$PYENV_ROOT/shims:$PATH"
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

验证安装是否成功: pyenv -v

如果在后续使用pyenv过程中发现相关报错,可以再见本人的另一篇博客:http://t.csdnimg.cn/G68Aj

特别是lzma模块没有安装这个错误比较常见。

Python包管理器-pyenv-virtualenv

pyenv-virtualenv用来创建独立的Python虚拟环境,可以将每个项目与其他项目独立开来,互不影响,解决了依赖包版本冲突的问题。

bash 复制代码
brew install pyenv-virtualenv

根据自身环境,将下方内容加到对应文件中: .bashrc / .zshrc

bash 复制代码
eval "$(pyenv virtualenv-init -)"

mysql5.7

最推荐这个博客:https://bbs.huaweicloud.com/blogs/351111

docker-desktop

Docker搭建mysql

  1. 拉取mysql官方镜像:
bash 复制代码
docker pull mysql:5.7
  1. Docker配置MySQL5.7容器并测试连接
bash 复制代码
mkdir -p ~/docker-images/mysql/data ~/docker-images/mysql/logs ~/docker-images/mysql/conf
  1. 在本地创建mysql容器的映射目录
bash 复制代码
mkdir -p ~/docker-images/mysql/data ~/docker-images/mysql/logs ~/docker-images/mysql/conf
  1. 使用 Docker 运行一个 MySQL 5.7 版本的容器。
bash 复制代码
docker run -p 3307:3306 --name mysql -v /Users/{用户名}/docker-images/mysql/conf:/etc/mysql/conf.d -v /Users/{用户名}/docker-images/mysql/logs:/logs -v /Users/{用户名}/docker-images/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD={你的本地mysql的root账户的密码} -d mysql:5.7

想要查看自己的用户名到底是什么,可以运行如下命令:

bash 复制代码
brew services list

看mysql那一栏对应的User是什么就是了。

下面是对于如上运行命令的详细解释:

  • docker run:Docker 的命令,用于运行一个新的容器。

  • -p 3307:3306:将容器的 3307 端口映射到宿主机的 3306 端口。

  • --name mysql:设置容器的名字为 mysql。

  • -v /Users/{用户名}/docker-images/mysql/conf:/etc/mysql/conf.d:将宿主机的 /root/mysql/conf 目录挂载到容器的 /etc/mysql/conf.d 目录。

  • -v /Users/{用户名}/docker-images/mysql/logs:/logs:将宿主机的 /root/mysql/logs 目录挂载到容器的 /logs 目录。

  • -v /Users/{用户名}/docker-images/mysql/data:/var/lib/mysql:将宿主机的 /root/mysql/data 目录挂载到容器的 /var/lib/mysql 目录。

  • -d:以后台模式运行容器。

  • mysql:5.7:要运行的 Docker 镜像的名字,这里是 MySQL 5.7 的镜像。

  1. 现在可以在Docker Desktop中看到对应的容器及其映射端口关系了捏

Docker搭建Redis

  1. 拉取redis的镜像
bash 复制代码
docker pull redis
  1. 创建redis的挂载目录
bash 复制代码
mkdir -p ~/docker-images/redis/data ~/docker-images/redis/logs ~/docker-images/redis/conf
  1. 进入到刚刚创建的redis目录下:
bash 复制代码
cd ~/docker-images/redis

下载redis.conf配置文件,并为其授予777权限

bash 复制代码
wget http://download.redis.io/redis-stable/redis.conf
chmod 777 redis.conf
  1. 设置redis.conf文件

推荐使用IDE等打开,因为这个文件文本内容很长

如果是使用vim编辑器,可以在正常模式(非插入模式)下,按下 "/" 键。输入您想要查找的内容,然后按 "Enter" 键。Vim将会把光标移动到下一个匹配的地方。如果您想继续查找下一个匹配的地方,可以按 "n" 键。如果想查找上一个匹配的地方,可以按 "N" 键。

bash 复制代码
bind 127.0.0.1 # 这行要注释掉,解除本地连接限制
protected-mode no # 默认yes,如果设置为yes,则只允许在本机的回环连接,其他机器无法连接。
daemonize no # 默认no 为不守护进程模式,docker部署不需要改为yes,docker run -d本身就是后台启动,不然会冲突
requirepass 123456 # 设置密码
appendonly yes # 持久化

其中requirepass 原本就是被注视掉的语句,可能有点难找,他的上文是:

复制代码
# The requirepass is not compatible with aclfile and the ACL LOAD
# command, these will cause requirepass to be ignored
#
  1. 启动
bash 复制代码
➜  redis docker run --name redis \
-p 6379:6379 \
-v /Users/{用户名}/docker-images/redis/redis.conf:/etc/redis/redis.conf \
-v /Users/{用户名}/docker-images/redis:/data \
-d redis redis-server /etc/redis/redis.conf --appendonly yes
  • -p 6379:6379:端口映射,前面是宿主机,后面是容器。

  • --name redis:指定该容器名称。

  • -v 挂载文件或目录:前面是宿主机,后面是容器。

  • -d redis redis-server /etc/redis/redis.conf:表示后台启动redis,以配置文件启动redis,加载容器内的conf文件。

  • appendonly yes:开启redis 持久化。

  1. 现在可以在Docker Desktop中看到对应的容器及其映射端口关系了捏
相关推荐
a程序小傲37 分钟前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
自学不成才1 小时前
深度复盘:一次flutter应用基于内存取证的黑盒加密破解实录并完善算法推理助手
c++·python·算法·数据挖掘
徐先生 @_@|||2 小时前
Palantir Foundry 五层架构模型详解
开发语言·python·深度学习·算法·机器学习·架构
深蓝电商API2 小时前
Scrapy爬虫限速与并发控制最佳实践
爬虫·python·scrapy
Derrick__12 小时前
淘宝MD5爬虫
爬虫·python
薛定谔的猫19822 小时前
llama-index Embedding 落地到 RAG 系统
开发语言·人工智能·python·llama-index
007php0073 小时前
mySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据
数据库·redis·git·mysql·面试·职场和发展·php
lkbhua莱克瓦243 小时前
进阶-存储过程3-存储函数
java·数据库·sql·mysql·数据库优化·视图
碎像3 小时前
10分钟搞定 MySQL 通过Binlog 数据备份和恢复
数据库·mysql
nimadan124 小时前
**手机小说扫榜工具2025推荐,精准追踪榜单动态与题材风向
python·智能手机