macos搭建python开发环境

2023-03-07

Homebrew

复制Homebrew官网open in new window的安装命令进行安装(需要良好的网络环境)

cmake nvm

通过homebrew安装cmakenvm等开发工具

  • 可能会遇到的安装失败

    Searching for similarly named formulae... 
    Error: No similarly named formulae found. 
    It was migrated from homebrew/cask to homebrew/core.
    
    # 解决
    # because you can't brew untap homebrew/core
    rm -rf $(brew --repo homebrew/core) 
    brew tap homebrew/core
    

vim配置语法高亮

复制默认配置文件cp /usr/share/vim/vimrc ~/.vimrccp /usr/share/vim/vimrc /etc/vimrc

编辑配置文件

  • 增加以下代码实现语法高亮的功能
    " 设置主题
    colorscheme desert
    " 语法高亮
    syntax on
    " 查找结果 高亮显示
    set hlsearch
    " 关闭兼容模式
    set nocompatible
    " 启用backspace
    set backspace=indent,eol,start
    
  • 直接使用以下配置 (vi 亦可用)
    " 中文乱码
    if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
        set fileencodings=ucs-bom,utf-8,latin1
    endif
    
    set nocompatible        " Use Vim defaults (much better!)
    set bs=indent,eol,start         " allow backspacing over everything in insert mode
    "set ai                 " always set autoindenting on
    "set backup             " keep a backup file
    set viminfo='20,\"50    " read/write a .viminfo file, don't store more
                            " than 50 lines of registers
    set history=50          " keep 50 lines of command line history
    set ruler               " show the cursor position all the time
    
    " 上次打开位置
    " Only do this part when compiled with support for autocommands
    if has("autocmd")
        augroup redhat
        autocmd!
        " In text files, always limit the width of text to 78 characters
        " autocmd BufRead *.txt set tw=78
        " When editing a file, always jump to the last cursor position
        autocmd BufReadPost *
        \ if line("'\"") > 0 && line ("'\"") <= line("$") |
        \   exe "normal! g'\"" |
        \ endif
        " don't write swapfile on most commonly used directories for NFS mounts or USB sticks
        autocmd BufNewFile,BufReadPre /media/*,/run/media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp
        " start with spec file template
        autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec
        augroup END
    endif
    
    if has("cscope") && filereadable("/usr/bin/cscope")
        set csprg=/usr/bin/cscope
        set csto=0
        set cst
        set nocsverb
        " add any database in current directory
        if filereadable("cscope.out")
            cs add $PWD/cscope.out
        " else add database pointed to by environment
        elseif $CSCOPE_DB != ""
            cs add $CSCOPE_DB
        endif
        set csverb
    endif
    
    " Switch syntax highlighting on, when the terminal has colors
    " Also switch on highlighting the last used search pattern.
    if &t_Co > 2 || has("gui_running")
        syntax on
        set hlsearch
    endif
    
    filetype plugin on
    
    if &term=="xterm"
        set t_Co=8
        set t_Sb=^[[4%dm
        set t_Sf=^[[3%dm
    endif
    
    " Don't wake up system with blinking cursor:
    " http://www.linuxpowertop.org/known.php
    let &guicursor = &guicursor . ",a:blinkon0"
    ~      
    

py3 virtualenv 虚拟环境

https://zhuanlan.zhihu.com/p/137624513

  • 安装虚拟环境与虚拟环境管理
    pip3 install virtualenv
    pip3 install virtualenvwrapper
    
  • 创建虚拟环境存储目录。默认为~/.virtualenvs。建议创建默认目录,也可自定义目录
    # 使用默认
    mkdir $HOME/.virtualenvs
    # 自定义
    mkdir ~/python_envs
    
  • 查看python3解释器与虚拟环境管理脚本位置
    which python3
    which virtualenvwrapper.sh
    
  • zsh修改.zshrc将mysql配置添加到环境变量(bash修改.bashrc),完成后先不进行source
    # 第二步中创建存储目录pwd
    # - 使用默认
    export WORKON_HOME=$HOME/.virtualenvs
    # - 使用自定义
    export WORKON_HOME='/Users/<username>/python_envs'
    # 第三步中python3解释器的位置
    export VIRTUALENVWRAPPER_PYTHON='/Library/Frameworks/Python.framework/Versions/3.7/bin/python3'
    source /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh
    
  • 执行一次虚拟环境管理脚本,后执行source使配置生效
    # 第三步中虚拟环境管理脚本位置
    . /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh
    # 使配置生效
    source ~/.zshrc
    

至此完成了虚拟环境的创建。以下是常用指令

  • mkvirtualenv 环境名 创建虚拟环境
  • workon 查看全部虚拟环境
  • workon 环境名 使用已有环境
  • deactivate 退出虚拟环境
  • rmvirtualenv 环境名 删除已有虚拟环境

说明: 在自定义目录的情况下,在创建新项目时仍可能生成~/.virtualenvs并在其中生成项目的虚拟环境文件,因此建议使用~/.virtualenvs目录进行创建

MySQL安装

  • mysql官网open in new window下载所需的社区版本桌面端APP
  • 在安装完成后,安装器会显示root用户的初始密码,需要记录
  • 在macos的系统偏好设置中点击MySQL启动MySQL服务
  • zsh修改 .zprofile 将mysql配置添加到环境变量(bash修改 .bash_profile),完成后进行source
    export PATH=${PATH}:/usr/local/mysql/bin
    export PATH=${PATH}:/usr/local/mysql/bin/mysql_config
    
  • 终端中使用初始密码登录mysql
    mysql -uroot -p初始密码
    
  • 执行下列命令修改root用户的密码
    # 设置密码
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourpassword');
    # 刷新权限
    FLUSH PRIVILEGES;
    

mongo安装

  • 官网open in new window下载所需的社区版本
  • 解压数据包并放入对应位置
    tar -zxvf mongodb-osx-ssl-x86_64-x.x.x.tgz
    sudo mkdir /usr/local/mongodb
    sudo mv mongodb-macos-x86_64-6.0.4/* /usr/local/mongdb/
    
  • zsh修改 .zprofile 将mongo配置添加到环境变量(bash修改 .bash_profile ),完成后进行source
    export PATH=${PATH}:/usr/local/mongodb/bin
    

启动:启动参数可使用mongod --help查看,--dpath用于指定数据存放位置

sudo mongod --dbpath /var/mongo/

docker安装

参照docker官方文档open in new window安装docker桌面端APP

具体命令与说明可参考相关文章open in new window

如需切换源:在设置中的docker engine选项json中添加配置

"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]

redis安装

  • redis官网open in new window下载所需版本的redis数据包

  • 解压数据包并放入对应位置

    tar -zxvf redis-x.x.x.tar.gz
    sudo mkdir /usr/local/redis
    sudo mv redis-x.x.x/* /usr/local/redis/
    cd /usr/local/redis
    # 进行环境测试,查看环境测试是否成功
    sudo make test
    # 生成运行文件
    sudo make install
    
  • 启动与关闭

    # 启动
    cd /usr/local/redis
    ./bin/redis-server etc/redis.conf
    
    # 关闭
    redis-cli shutdown
    
  • 配置文件部分配置项说明

    • bind 127.0.0.1 监听ip,如需远程连接则需取消bind配置项
    • protected-mode yes 只允许本机连接,如需远程连接则需要设置为no
    • requirepass xxx 设置redis连接密码
    • dir /var/lib/redis 设置数据库快照文件写入位置

redis的开机启动
参考:http://www.js2node.com/redis-io/install-redis-io-2-4-17-on-mac-osx-as-serviceopen in new window

给mac添加一个启动项

  • 在 ~/Library/LaunchAgents 目录下自己建立一个 redis.plist

  • sudo vim redis.plist输入以下内容

Labelio.redis.redis-serverProgramArguments/usr/local/bin/redis-server/usr/local/etc/redis.confRunAtLoad

  • 执行命令sudo launchctlload/Library/LaunchDaemons/io.redis.redis-server.plist

  • 打开关闭sudo launchctlstartio.redis.redis-server$ sudo launchctl stop io.redis.redis-server

elasticsearch

  • 下载并解包

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz
    tar -xvf elasticsearch-7.8.0-linux-x86_64.tar.gz .
    
  • 配置java虚拟机,编辑配置 config/jvm.options

    # 内存信息
    -Xms1g
    -Xmx1g
    
    
  • 配置es,编辑es配置文件elasticsearch-7.8.0/config/elasticseach.yml,常用配置如下

    # 当前节点名称 - 自定义节点名称
    node.name: <node_name>
    
    # Path to directory where to store the data (separate multiple locations by comma):
    path.data: /data/elasticsearch
    # Path to log files:
    path.logs: /data/logs/elasticsearch
    
    # # 设置当前的IP地址,通过指定相同网段的其他节点会加入该集群中
    network.host: 0.0.0.0
    # # 设置对外服务的http端口
    http.port: 9200
    
    # 把当前节点当做集群的主节点 - 内网ip + 自定义节点名称
    discovery.seed_hosts: ["<host_ip>"]
    cluster.initial_master_nodes: ["<node_name>"]
    
    # 允许跨域访问
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    http.cors.allow-headers: Authorization
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    
  • 运行。linux下不可使用root用户运行。需要通过useradd elsearchsu - elsearch创建用户后执行以下内容

    cd elasticsearch-7.8.0/bin
    ./elasticsearch
    

fastdfs安装

使用docker进行fastdfs的安装

  • 拉取镜像
    docker pull delron/fastdfs
    
  • linux开启tracker服务。指明名称,网络,本地到容器的卷宗映射
    # --name tracker 容器名   delron/fastdfs tracker 镜像执行的命令
    sudo docker run -dit --name tracker --network=host -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
    
  • linux开启storage服务,指明名称,网络,tracker服务的内网地址,本地到容器的卷宗映射
    sudo docker run -dti --name storage --network=host -e TRACKER_SERVER=192.168.xxx.xxx:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage
    
  • 由于macos不能使用host网络绑定端口,需要创建docker桥接网络(默认创建的就是桥接模式)
    docker network create my-net
    
  • macos通过桥接网络开启tracker服务
    docker run -d -p 22122:22122 --name tracker --net=my-net  -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
    
  • macos通过桥接网络开启storage服务 通过8888与23000端口的桥接
    # 方法一:宿主机机局域网ip - 用于支持局域网访问
    docker run -d -p 8888:8888 -p 23000:23000 --name storage --net=my-net -e TRACKER_SERVER=192.168.1.8:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
    
    # 方法二:容器间的通信,可使用容器名
    docker run -d -p 8888:8888 -p 23000:23000 --name storage --net=my-net -e TRACKER_SERVER=tracker:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
    
  • 由于storage容器注册在tracker容器中用的是容器网段ip(172.19.0.1),所以tracker在跟storage通信时,接收到的storage的地址也是也是该ip,导致宿主机内环境在上传时,源码中通过tracker返回的storage创建storage连接对象时,无法访问storage(此时需要127进行访问)。需要将宿主机中请求172.19.0.1的请求都默认为docker中的请求。在客户端访问172.19.0.1:23000时,会转向访问本机的127.0.0.1:23000进入docker中的tracker服务
  • macos参照命令并建立172的端口映射,参考文章open in new window内10开头的端口映射暂时不用。
    sudo ifconfig lo0 alias 172.19.0.1
    

安卓SDK与NDK安装

JRE

系统自带java环境,编辑 ~/.zprofile 配置一些环境变量供IDE使用

export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib

SDK

  • 下载压缩包

  • 将以下内容加入 ~/.zprofile ,注意修改用户名

    export ANDROID_HOME=/Users/<username>/android-sdk-macosx
    export PATH=${PATH}:${ANDROID_HOME}/platform-tools
    export PATH=${PATH}:${ANDROID_HOME}/tools
    export PATH=${PATH}:${ANDROID_HOME}/build-tools/29.0.3
    

NDK

  • 下载压缩包。不同版本ndk的下载链接https://www.jianshu.com/p/c5b59cbe65f7,文本使用 r10e

  • 将下载得到的bin文件,进行解压

    # 添加文件的可执行权限
    chmod a+x android-ndk-r10e-darwin-x86_64.bin
    # 解压文件
    sudo ./android-ndk-r10c-darwin-x86_64.bin
    
  • 将以下内容加入 ~/.zprofile ,注意修改用户名

    export ANDROID_NDK_ROOT=/Users/<username>/android-ndk-r10e
    export NDK_ROOT=/Users/<username>/android-ndk-r10e
    export NDK_ROOT_quick=/Users/<username>/android-ndk-r10e
    export PATH=${PATH}:${ANDROID_NDK_ROOT}/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin
    

gradle

  • 官网下载页面open in new window中选择对应版本点击 binary-only 下载压缩包并解压(下载7.0+版本)
  • 配置环境变量,注意修改用户名
    export GRADLE_HOME=/Users/<username>/gradle-7.5.1
    export PATH=${PATH}:${GRADLE_HOME}/bin
    
  • 使用命令gradle -v确认是否安装成功

安装maven

  • 前往apche官网open in new window下载maven安装包

  • 使用命令tar -zxvf apache-maven-x.x.x-bin.tar.gz或直接双击进行解压

  • 将得到的文件夹放入 /usr/local/ 并配置环境变量 ~/.zprofile

    export MAVEN_HOME=/usr/local/apache-maven-x.x.x
    export PATH=$MAVEN_HOME/bin:$PATH
    

参考文章

python虚拟环境 https://zhuanlan.zhihu.com/p/137624513open in new window
mysql安装 https://jingyan.baidu.com/article/fa4125ac0e3c2928ac709204.htmlopen in new window
mongo安装 https://www.jianshu.com/p/bb77f8be67f4open in new window
docker命令参考 https://www.jianshu.com/p/6067a74fca3copen in new window
redis安装 https://yijiebuyi.com/blog/d8ab4b444c16f42cefe30df738a42518.htmlopen in new windowhttps://www.jianshu.com/p/6b5eca8d908bopen in new window
fastdfs安装 https://blog.csdn.net/zhujuntiankong/article/details/106864724open in new window