Python开发环境配置(mac M2)

1. 前言

  • 作为一名程序员,工作中需要使用Python进行编程,甚至因为项目需要还得是不同版本的Python
  • 如何手动管理多个版本的Python,如何给Pycharm(IDE)配置对应的interpreter等,都成为一个 “不熟练工” 的难题
  • 笔者刚拿到mac M2的电脑时,系统好像自带了 Python2 和 Python3,可以通过如下命令开启对应版本的python解释器
    python # 启动python2解释器
    python3 # 启动python3解释器
    
  • 甚至为了让python能默认开启Python3解释器,还配置了alias
    alias python=python3
    alias pip="python -m pip" # 让pip随python变化
    
  • 但是,除了 Python2 和 Python3,甚至笔者还需要安装其他版本的Python3
  • 本文将介绍如何通过pyenv安装并管理Python环境、如何在Pycharm中设置Python解释器等

2. pyenv:安装和管理多版本Python的利器

  • 关于pyenv的简介和原理,可以参考:MacOS 下利用 pyenv 管理Python 版本和虚拟环境
  • 如果喜欢中文文档,可以参考:Mac Python 使用 pyenv 多版本管理

2.1 安装pyenv

  • 关于如何在mac OS安装pyenv,其实pyenv官网的介绍非常详细
    • 安装pyenv:Getting Pyenv for UNIX/MacOS
    • 设置环境变量,对mac OS来说,一般都是在~/.zshrc中设置env:Set up your shell environment for Pyenv
  • 目前,笔者的mac的~/.zshrc中 pyenv 的配置如下,与官往不同,也 work ok
    export PYENV_ROOT=~/.pyenv
    export PATH=$PYENV_ROOT/shims:$PATH
    

2.2 通过pyenv安装并管理多个Python版本

  • 一些简单命令介绍如下,具体查看官方文档:Usage
    • 通过pyenv安装Pyhton

      # 查看pyenv支持版本
      pyenv install -l 
      # 选择对应的版本进行安装,如:安装3.9.6
      pyenv install 3.9.6
      
    • 查看已安装的Python版本

      # 查看pyenv已经安装好的Python版本,其中以 * 开头的版本是目前正在使用的版本
      pyenv versions
      # 查看当前使用的Python版本
      pyenv version
      
    • 为当前用户或当前目录设置Python版本

      pyenv global xxx # 设置当前用户的Python版本
      pyenv local xxx # 设置当前目录的Python版本
      

3. Pycharm:为项目设置Python解释器

  • 本节将介绍如何给Pycharm中的项目配置本地安装的Python解释器

3.1 准备工作:了解Python的安装目录

  • 所谓的Python安装目录, 一般是指python命令所在的目录
  • 可以通过如下python代码,查看当前python命令的目录
    # 写入1.py,通过python 1.py查看python命令的目录
    import sys
    print(sys.executable)
    
  • 通过pyenv安装的python,其python命令的目录一般都是有规律:
    ~/.pyenv/versions/2.7.18/bin/python
    ~/.pyenv/versions/3.9.6/bin/python
    

3.2 为项目设置Python解释器

  • 进入Settings → \rightarrow Project在这里插入图片描述
  • Python Interpreter → \rightarrow Add Interpreter → \rightarrow Add Local Interpreter...
    在这里插入图片描述
  • 添加本地已经安装的python在这里插入图片描述
  • 参考文档:pycharm中配置Python解释器(最新)

3.3 附录:如何查看pip命令的安装目录

  • 可以直接通过如下命令查看pip命令的安装目录:~/.pyenv/versions/2.7.18/lib/python2.7/site-packages/pip

    pip --version
    
  • 也可以通过python脚本打印pip命令的目录

    import os
    from distutils.sysconfig import get_python_libpip_path = os.path.join(get_python_lib(), 'pip')
    print(pip_path)
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/55683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络:物理层 —— 信道复用技术

文章目录 信道信道复用技术信道复用技术的作用基本原理常用的信道复用技术频分复用 FDM时分复用 TDM波分复用 WDM码分复用 CDM码片向量基本原理 信道 信道是指信息传输的通道或介质。在通信中,信道扮演着传输信息的媒介的角色,将发送方发送的信号传递给…

『网络游戏』窗口基类【06】

创建脚本:WindowRoot.cs 编写脚本: 修改脚本:LoginWnd.cs 修改脚本:LoadingWnd.cs 修改脚本:ResSvc.cs 修改脚本:LoginSys.cs 运行项目 - 功能不变 本章结束

图片压缩王2.1.5 | 高效图片处理,无广告无登录

图片压缩王是一款专为安卓用户设计的高效图片处理工具。支持批量压缩、格式转换、缩放和裁剪等功能,无广告无登录,让你专注图片处理。 大小:25M 百度网盘:https://pan.baidu.com/s/1cfNJmy6-KeNtlMJRknMZOA?pwdolxt 夸克网盘&am…

LabVIEW裂纹深度在线监测系统

随着铁路运输技术的快速发展,火车安全问题成为重中之重,尤其是轮面裂纹的检测和管理。裂纹的出现可能导致严重的列车事故,因此,建立可靠的在线监测系统,实时掌握裂纹情况,对保障铁路运输安全至关重要。 La…

[Python学习日记-39] 闭包是个什么东西?

[Python学习日记-39] 闭包是个什么东西? 简介 闭包现象 闭包意义与作用 简介 在前面讲函数和作用域的时候应该提到过,当函数运行结束后会由 Python 解释器自带的垃圾回收机制回收函数内作用域已经废弃掉的变量,但是在 Python 当中还有一种…

【保姆级教程】UMLS工具——MetaMap安装及使用

专家词典 https://lhncbc.nlm.nih.gov/LSG/Projects/lexicon/current/web/index.html SPECIALIST 词典是一个大型的生物医学和通用英语句法词典,旨在提供 SPECIALIST 自然语言处理系统 (NLP) 所需的词汇信息,其中包括 MetaMap 和词汇工具等。它旨在成为…

【微服务】网关 - Gateway(下)(day8)

网关过滤工厂 在上一篇文章中,主要是对网关进行了一个总体的介绍,然后对网关中的断言进行了一个描述。在这篇文章中,主要是对网关中的最后一大核心——过滤进行介绍。 当客户端发送过来的请求经过断言之后,如果还想在请求前后添…

SQl注入文件上传及sqli-labs第七关less-7

Sql注入文件上传 1、sql知识基础 secure_file_priv 参数 secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。 secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能导出导入。 secure_fil…

opencv学习:利用帧差法实现对视频移动物体的识别、帧差法的优缺点及完整代码实现

基本概念 帧差法是视频处理和计算机视觉领域中用于移动检测的一种简单而有效的方法。它主要依赖于连续视频帧之间的像素差异来识别场景中的移动对象。 帧差法: 定义:帧差法通过比较连续的视频帧之间的差异来检测移动对象。基本思想是移动对象会在连续的…

【Android 源码分析】Activity生命周期之onDestroy

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

信息学奥赛使用的编程IDE:Dev-C++ 安装指南

信息学奥赛(NOI)作为全国性的编程竞赛,要求参赛学生具备扎实的编程能力,而熟练使用适合的编程工具则是学习与竞赛的基础。在众多编程环境中,Dev-C IDE 因其简洁、轻量、支持C编程等特点,成为许多参赛者的常…

Android阶段学习思维导图

前言 记录下自己做的一个对Android原生应用层的思维导图,方便个人记忆扩展;这里只露出二级标题。 后语 虽然有些内容只是初步了解,但还是记录了下来;算是对过去一段学习的告别。

Linux Cent7 已安装MySQL5.7.X,再安装MYSQL8.4.2

一、 下载安装 检查Linux系统的glibc版本rpm -qa | grep glibc结果:glibc-common-2.17-260.el7_6.6.x86_64 glibc-2.17-260.el7_6.6.x86_64 glibc-headers-2.17-260.el7_6.6.x86_64 glibc-devel-2.17-260.el7_6.6.x86_64访问MySQL官网,下载对应版本数据…

JavaSE——面向对象6.1:继承知识点补充(虚方法表等)

目录 一、子类到底能继承父类中的哪些内容? 二、继承内存图 三、继承中:成员变量和成员方法的访问特点 (一)成员变量的访问特点 (二)成员方法的访问特点 1.this与super访问成员方法的特点 2.方法重写 2.1方法重写的本质:子类覆盖了从…

shell脚本写代码

用简单的test语句来判断是否闰年 #! /bin/bash read -p "sd " yearif [ $((year%4)) -eq 0 -a $((year%100)) -ne 0 -o $((year%400)) -eq 0 ]thenecho "是润年"elseecho "不是闰年" fi判断一个数是否为偶数 #! /bin/bash read -p "…

【C语言】猜数字小游戏

😂个人主页: 起名字真南 🤣个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 随机数的生成1.1 rand1.2 srand1.3 time1.4 设置随机数范围 2 猜数字游戏实现 前言:我们学习完前面的循环以后可以写一个猜数字小游戏 1 随机数的生成 想要完成…

Java 中的 LinkedHashMap

让我们从一个简单的 Java 代码片段开始,演示如何在 Java 中创建和使用 LinkedHashMap。 import java.util.LinkedHashMap; public class LinkedHashMapCreation { public static void main(String[] args) { // Create a LinkedHashMap of S…

django的路由分发

前言: 在前面我们已经学习了基础的Django了,今天我们将继续学习,我们今天学习的是路由分发: 路由分发是Web框架中的一个核心概念,它指的是将不同的URL请求映射到对应的处理函数(视图)的过程。…

Ambari搭建Hadoop集群 — — 问题总结

Ambari搭建Hadoop集群 — — 问题总结 一、部署教程: 参考链接:基于Ambari搭建大数据分析平台-CSDN博客 二、问题总结: 1. VMwear Workstation 查看网关 2. 资源分配 参考: 硬盘:master(29 GB&#xff…

手机使用技巧:8 个 Android 锁屏移除工具 [解锁 Android]

有时候,您会被锁定在自己的 Android 设备之外,而且似乎不可能重新进入。 一个例子就是你买了一部二手手机,后来发现无法使用。另一种情况是你忘记了屏幕锁定密码和用于验证密码的 Google 帐户凭据。这种情况很少见,但确实会发生&…