macos python环境安装

安装的问题

mac 安装 python

brew install python

通过brew安装的python安装路径

打开终端,输入brew search python:

为啥会被安装在这里

  • Frameworks 的用途
  • /Library/Frameworks 是 macOS 系统中专门用于存放框架的目录。框架是一种结构化的目录,包含了动态库、头文件、资源文件等。
  • Python 官方的安装包会将 Python 作为一个框架安装,以便开发者在使用 macOS 时能够轻松地集成和管理 Python。
  • 版本管理
  • 官方安装包会将不同的 Python 版本安装到 Versions 子目录下,例如:
/Library/Frameworks/Python.framework/Versions/3.12/
  • 这使得你可以并存多个 Python 版本,并通过软链接管理当前默认使用的版本:
/Library/Frameworks/Python.framework/Versions/Current -> 3.12

R也安装在这里

包管理的问题

解释 python3 -m site 的输出

运行 python3 -m site 命令后,Python 显示了与当前环境相关的一些路径和配置。以下是输出内容逐项的解释:


1. sys.path

sys.path 是 Python 的模块搜索路径列表,它定义了 Python 在加载模块时搜索的目录顺序。列表中的路径按顺序搜索,直到找到匹配的模块。

你的 sys.path 输出如下:

python


Copy code
sys.path = [
    '/Library/Frameworks',
    '/Library/Frameworks/Python.framework/Versions/3.12/lib/python312.zip',
    '/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12',
    '/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/lib-dynload',
    '/Users/ljfu/Library/Python/3.12/lib/python/site-packages',
    '/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages',
]
每个路径的作用
  1. /Library/Frameworks
    • 一般不是 Python 模块的常规路径,可能是误加的路径。模块搜索不会特别依赖于它。
  1. /Library/Frameworks/Python.framework/Versions/3.12/lib/python312.zip
    • 如果 Python 的标准库被打包成 .zip 文件存储(为了节省磁盘空间或加快加载速度),它会被放在这里。
  1. /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12
    • Python 的标准库路径,存放 Python 的核心模块(如 ossysmath 等)。
  1. /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/lib-dynload
    • 存放动态加载模块(通常是用 C/C++ 编写的扩展模块,比如 _ctypes.cpython-312-darwin.so)。
  1. /Users/ljfu/Library/Python/3.12/lib/python/site-packages
    • 当前用户的 site-packages 目录,供用户安装的第三方模块使用。它只对当前用户可见。
  1. /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages
    • 全局 site-packages 目录,存放为所有用户安装的第三方模块。

2. USER_BASE

USER_BASE: '/Users/ljfu/Library/Python/3.12' (exists)
  • USER_BASE 是 Python 用户目录的基础路径,当前用户的所有 Python 配置和安装文件存储在这里。
  • 默认值是:
~/Library/Python/<python_version>

3. USER_SITE

USER_SITE: '/Users/ljfu/Library/Python/3.12/lib/python/site-packages' (exists)
  • USER_SITEUSER_BASE 下专门存放当前用户安装的第三方模块的路径。
  • 使用 pip install --user 安装的模块会被放在这里。

4. ENABLE_USER_SITE

python


Copy code
ENABLE_USER_SITE: True
  • ENABLE_USER_SITE 决定是否启用 USER_SITE 目录。
  • True 时,Python 会在模块搜索路径中包含用户目录的路径(如 /Users/ljfu/Library/Python/3.12/lib/python/site-packages)。
  • 如果设置为 False,即使用户安装了模块,Python 也不会在用户目录中查找模块。

总结

从这个输出可以看出:

  1. Python 的核心模块动态加载模块 都位于官方安装路径下:
bash


Copy code
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12
  1. 第三方模块 的存储分为两类:
    • 全局安装/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages
    • 用户安装/Users/ljfu/Library/Python/3.12/lib/python/site-packages
  1. 模块加载优先级
    • Python 按照 sys.path 中的顺序查找模块。如果同名模块出现在多个路径中,先找到的会被加载。
  1. 用户可配置性
    • 你可以通过修改 sys.path 或配置环境变量(如 PYTHONPATH)来调整模块的搜索路径。

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。

pip --version     # Python2.x 版本命令
pip3 --version    # Python3.x 版本命令

pip 最常用命令

显示版本和路径

pip --version

获取帮助

pip --help

升级 pip

pip install -U pip

如果这个升级命令出现问题 ,可以使用以下命令:

sudo easy_install --upgrade pip

安装包

pip install SomePackage              # 最新版本
pip install SomePackage==1.0.4       # 指定版本
pip install 'SomePackage>=1.0.4'     # 最小版本

比如我要安装 Django。用以下的一条命令就可以,方便快捷。

pip install Django==1.7

升级包

pip install --upgrade SomePackage

升级指定的包,通过使用==, >=, <=, >, < 来指定一个版本号。

卸载包

pip uninstall SomePackage

搜索包

pip search SomePackage

显示安装包信息

pip show

查看指定包的详细信息

pip show -f SomePackage

列出已安装的包

pip list

查看可升级的包

pip list -o

pip 升级

Linux 或 macOS

pip install --upgrade pip    # python2.x
pip3 install --upgrade pip   # python3.x

Windows 平台升级:

python -m pip install -U pip   # python2.x
python -m pip3 install -U pip    # python3.x

pip 清华大学开源软件镜像站

使用国内镜像速度会快很多:

临时使用:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

例如,安装 Django:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Django

如果要设为默认需要升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

如果您到 pip 默认源的网络连接较差,临时使用本镜像站来升级 pip:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U

pip install安装路径介绍

pip是Python语言中的一个包管理工具,通过pip我们可以安装、升级、卸载Python包。在这个过程中,pip默认会将Python包安装到系统的全局路径下,但是很多时候我们需要将Python包安装到指定的路径下,这里就介绍一下pip install安装路径的相关内容。

一、指定安装路径

默认情况下,pip会将Python包安装到系统的全局路径下,比如在Linux系统下是/usr/local/lib/python3.8/site-packages/。但是我们可以通过在pip install命令后面添加--target参数指定安装路径。例如,我们要将numpy包安装到当前用户目录下的mylibs目录下,可以使用以下命令:

pip install numpy --target ~/mylibs

这样,numpy包就会被安装到~/mylibs目录下。

二、加入环境变量

在默认情况下,安装到全局路径下的Python包是可以被所有用户访问到的。但是如果我们使用--target参数指定了安装路径,那么其他用户就无法直接访问到这些Python包了。

为了让其他用户也可以使用我们安装的Python包,一般有两种解决办法:

1. 将安装路径加入到PYTHONPATH环境变量中
export PYTHONPATH=$PYTHONPATH:~/mylibs

执行该命令后,~/mylibs就会被添加到系统的PYTHONPATH环境变量中,其他用户就可以直接使用我们安装的Python包了。

2. 在sys.path中添加安装路径

在Python代码中可以使用以下命令将安装路径添加到sys.path中:

import sys



sys.path.append('~/mylibs')

这样其他用户也可以使用我们安装的Python包了。

三、指定包名称和版本号

在使用pip install命令安装Python包时,可以指定要安装的包名称和版本号。可以使用==!=><>=<=这些符号来指定版本号。

例如,我们想安装numpy包的1.19.3版本,可以使用以下命令:

pip install numpy==1.19.3

如果我们想安装除了1.19.3版本以外的numpy包,可以使用以下命令:

pip install numpy!=1.19.3
四、使用requirements.txt文件

在实际项目中,我们通常会使用requirements.txt文件记录项目依赖的Python包以及对应的版本号。可以使用以下命令将requirements.txt文件中的Python包安装到指定的安装路径下:

pip install -r requirements.txt --target ~/mylibs

这样,requirements.txt文件中记录的Python包就会被安装到~/mylibs目录下。

五、总结

通过以上内容,我们了解了如何指定pip install安装路径、如何将安装路径加入到环境变量中、如何指定包名称和版本号以及如何使用requirements.txt文件来安装Python包。这些内容对于项目模块化开发非常重要。

Python 自带的包(模块)是 Python 标准库的一部分,通常包含了许多基础模块,比如 sysosmathdatetime 等。它们会随 Python 的安装一起安装,存放在一个固定的位置。

python3 -c "import sys; print(sys.prefix)"

2. 如何查看标准库的位置

在任何平台上,你可以使用 sys 模块来查看标准库的安装路径。运行以下代码:

python


Copy code
import sys
print(sys.prefix)  # Python 安装目录
print(sys.exec_prefix)  # 与 sys.prefix 相同,表示 Python 解释器的位置

在标准的 Python 安装中,标准库位于 sys.prefix/lib/pythonX.Y 目录下。

此外,你还可以通过 sys.path 查看所有 Python 搜索模块的路径,包括标准库的路径。

python


Copy code
import sys
print(sys.path)

其中会包含指向标准库目录的路径。


3. 自带包存放位置示例

假设你安装了 Python 3.12,那么:

  • macOS / Linux
bash


Copy code
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/
  • Windows
bash


Copy code
C:\Users\<Username>\AppData\Local\Programs\Python\Python312\Lib\

在该目录下,你将看到像 os.pysys.pymath.py 等 Python 标准库模块。这些模块是由 Python 官方维护和提供的,安装时会自动包含在内。


4. 查看模块安装位置

如果你想查看某个标准库模块(如 sys)的安装位置,可以使用模块的 __file__ 属性。不过,对于一些内建模块(如 sysmath),它们没有 __file__ 属性,因为它们是在 Python 解释器启动时编译进内存的。

python


Copy code
import sys
print(sys.__file__)  # sys 模块没有 __file__,会抛出 AttributeError

对于像 osdatetime 等模块,它们通常是 .py 文件,因此可以用 __file__ 查看其位置:

python


Copy code
import os
print(os.__file__)  # 输出 os 模块的安装路径

5. 标准库更新和安装

标准库与 Python 解释器一起更新,通常不可单独更新。如果你需要特定版本的标准库,通常需要更新整个 Python 安装版本。你可以通过以下方式安装或更新 Python:

  • macOS / Linux:使用包管理器(如 apt, brew)或从 Python官网 下载最新的 Python 安装包。
  • Windows:从 Python官网 下载并安装 Python。

总结

  • Python 自带的模块(标准库)安装在 Python 安装目录下,具体路径依赖于你的操作系统和 Python 版本。
  • 你可以使用 sys.prefixsys.path 查看 Python 安装目录和标准库路径。
  • 标准库通常位于 Python 安装目录的 lib/pythonX.Y/ 子目录中。

通过这些方法,你可以轻松查找 Python 自带模块的位置。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 笔记 数据链路层 2

1,信道划分&#xff1a; (1)时分复用TDM 将时间等分为“TDM帧”&#xff0c;每个TDM帧内部等分为m个时隙&#xff0c;m个用户对应m个时隙 缺点&#xff1a;每个节点只分到了总带宽的1/m,如果有部分的1节点不发出数据&#xff0c;那么就会在这个时间信道被闲置&#xff0c;利用…

ElasticSearch在Windows环境搭建测试

引子 也持续关注大数据相关内容一段时间&#xff0c;大数据内容很多。想了下还是从目前项目需求侧出发&#xff0c;进行相关学习。Elasticsearch&#xff08;ES&#xff09;是位于 Elastic Stack&#xff08;ELK stack&#xff09; 核心的分布式搜索和分析引擎。Logstash 和 B…

计算机网络 笔记 网络层1

网络层功能概述 主要的任务是把分组从源端传输到目的端&#xff0c;为分组交换网上的不同主句提供通信服务&#xff0c;网络层的传输单位是数据报。 主要的功能&#xff1b; 1&#xff0c;路由选择&#xff1a;路由选择指网络层根据特定算法&#xff0c;为数据包从源节点到目…

Rubyer-WPF:打造优雅、精致的 WPF 用户界面

在桌面应用开发领域&#xff0c;WPF&#xff08;Windows Presentation Foundation&#xff09;凭借其强大的 UI 设计能力和丰富的功能&#xff0c;始终是开发者们青睐的工具之一。今天&#xff0c;我将为大家介绍一款专注于 WPF UI 设计的优秀项目——Rubyer-WPF&#xff0c;它…

设计模式 行为型 访问者模式(Visitor Pattern)与 常见技术框架应用 解析

访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为设计模式&#xff0c;它允许你在不改变元素类的前提下定义作用于这些元素的新操作。这种模式将算法与对象结构分离&#xff0c;使得可以独立地变化那些保存在复杂对象结构中的元素的操作。 假设我们有一个复杂的对…

继承多态语法糖

抽象类(通用) 子类继承父类方法后&#xff0c;这个子类对象如果执行方法的话&#xff0c;只要子类重写了就执行子类的&#xff0c;不执行父类的。 /*** 功能&#xff1a;* 作者&#xff1a;IT伟* 日期&#xff1a;2025/1/13 19:20*/ // 抽象类 A abstract class A {// 构造函…

MarS:一个由生成基础模型驱动的金融市场模拟引擎

“MARS: A FINANCIAL MARKET SIMULATION ENGINE POWERED BY GENERATIVE FOUNDATION MODEL” 项目主页&#xff1a;https://mars-lmm.github.io/ 论文地址&#xff1a;https://arxiv.org/pdf/2409.07486 Github地址&#xff1a;https://github.com/microsoft/MarS/ 摘要 生成…

macOS 使用 FreeRDP 远程访问 Windows:完整指南20250109

&#x1f5a5;️ macOS 使用 FreeRDP 远程访问 Windows&#xff1a;完整指南 引言 随着远程办公需求的快速增长&#xff0c;跨平台远程管理已经成为不可或缺的技能之一。作为一款开源轻量的远程桌面协议实现工具&#xff0c;FreeRDP 为 macOS 用户提供了一个简单、高效的解决…

两分钟解决 :![rejected] master -> master (fetch first) , 无法正常push到远端库

目录 分析问题的原因解决 分析问题的原因 在git push的时候莫名遇到这种情况 若你在git上修改了如README.md的文件。由于本地是没有README.md文件的&#xff0c;所以导致 远端仓库git和本地不同步。 将远端、本地进行合并就可以很好的解决这个问题 注意&#xff1a;直接git pu…

计算机图形学【绘制立方体和正六边形】

工具介绍 OpenGL&#xff1a;一个跨语言的图形API&#xff0c;用于渲染2D和3D图形。它提供了绘制图形所需的底层功能。 GLUT&#xff1a;OpenGL的一个工具库&#xff0c;简化了窗口创建、输入处理和其他与图形环境相关的任务。 使用的函数 1. glClear(GL_COLOR_BUFFER_BIT |…

springboot高校教室资源管理平台

Spring Boot高校教室资源管理平台是一个基于Spring Boot框架开发的高校教室资源管理系统。 一、平台背景与意义 随着高校规模的不断扩大&#xff0c;教室资源的管理变得日益复杂。传统的管理方式往往依赖于人工记录和纸质文件&#xff0c;不仅效率低下&#xff0c;而且容易出…

[笔记] 使用 Jenkins 实现 CI/CD :从 GitLab 拉取 Java 项目并部署至 Windows Server

随着软件开发节奏的加快&#xff0c;持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;已经成为确保软件质量和加速产品发布的不可或缺的部分。Jenkins作为一款广泛使用的开源自动化服务器&#xff0c;为开发者提供了一个强大的平台来实施这些实践。然而…

正点原子STM32F103战舰版电容触摸键学习

一、tpad.h代码 #ifndef __TPAD_H #define __TPAD_H#include "./SYSTEM/sys/sys.h"/******************************************************************************************/ /* TPAD 引脚 及 定时器 定义 *//* 我们使用定时器的输入捕获功能, 对TPAD进行检…

JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)

1&#xff0c;ZGC&#xff08;JDK21之前&#xff09; ZGC 的核心是一个并发垃圾收集器&#xff0c;所有繁重的工作都在Java 线程继续执行的同时完成。这极大地降低了垃圾收集对应用程序响应时间的影响。 ZGC为了支持太字节&#xff08;TB&#xff09;级内存&#xff0c;设计了基…

zerox - 使用视觉模型将 PDF 转换为 Markdown

7900 Stars 478 Forks 39 Issues 17 贡献者 MIT License Python 语言 代码: https://github.com/getomni-ai/zerox 主页: OmniAI. Automate document workflows 更多AI开源软件&#xff1a;AI开源 - 小众AI zerox基于视觉模型 API 服务&#xff0c;提供了将 PDF 文档转化为 Mar…

JAVA:Spring Boot 集成 JWT 实现身份验证的技术指南

1、简述 在现代Web开发中&#xff0c;安全性尤为重要。为了确保用户的身份&#xff0c;JSON Web Token&#xff08;JWT&#xff09;作为一种轻量级且无状态的身份验证方案&#xff0c;广泛应用于微服务和分布式系统中。本篇博客将讲解如何在Spring Boot 中集成JWT实现身份验证…

[论文阅读] (35)TIFS24 MEGR-APT:基于攻击表示学习的高效内存APT猎杀系统

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…

目标检测中的Bounding Box(边界框)介绍:定义以及不同表示方式

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

openEuler22.03系统使用Kolla-ansible搭建OpenStack

Kolla-ansible 是一个利用 Ansible 自动化工具来搭建 OpenStack 云平台的开源项目&#xff0c;它通过容器化的方式部署 OpenStack 服务&#xff0c;能够简化安装过程、提高部署效率并增强系统的可维护性。 前置环境准备&#xff1a; 系统:openEuler-22.03-LTS-SP4 配置&…

Leecode刷题C语言之统计重新排列后包含另一个字符串的子字符串数目②

执行结果:通过 执行用时和内存消耗如下&#xff1a; void update(int *diff, int c, int add, int *cnt) {diff[c] add;if (add 1 && diff[c] 0) {// 表明 diff[c] 由 -1 变为 0(*cnt)--;} else if (add -1 && diff[c] -1) {// 表明 diff[c] 由 0 变为 -…