安装的问题
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',
]
每个路径的作用
/Library/Frameworks
-
- 一般不是 Python 模块的常规路径,可能是误加的路径。模块搜索不会特别依赖于它。
/Library/Frameworks/Python.framework/Versions/3.12/lib/python312.zip
-
- 如果 Python 的标准库被打包成
.zip
文件存储(为了节省磁盘空间或加快加载速度),它会被放在这里。
- 如果 Python 的标准库被打包成
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12
-
- Python 的标准库路径,存放 Python 的核心模块(如
os
、sys
、math
等)。
- Python 的标准库路径,存放 Python 的核心模块(如
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/lib-dynload
-
- 存放动态加载模块(通常是用 C/C++ 编写的扩展模块,比如
_ctypes.cpython-312-darwin.so
)。
- 存放动态加载模块(通常是用 C/C++ 编写的扩展模块,比如
/Users/ljfu/Library/Python/3.12/lib/python/site-packages
-
- 当前用户的
site-packages
目录,供用户安装的第三方模块使用。它只对当前用户可见。
- 当前用户的
/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_SITE
是USER_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 也不会在用户目录中查找模块。
总结
从这个输出可以看出:
-
Python 的核心模块 和 动态加载模块 都位于官方安装路径下:
bash
Copy code
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12 -
第三方模块 的存储分为两类:
-
- 全局安装 :
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages
- 用户安装 :
/Users/ljfu/Library/Python/3.12/lib/python/site-packages
- 全局安装 :
- 模块加载优先级:
-
- Python 按照
sys.path
中的顺序查找模块。如果同名模块出现在多个路径中,先找到的会被加载。
- Python 按照
- 用户可配置性:
-
- 你可以通过修改
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 标准库的一部分,通常包含了许多基础模块,比如 sys
、os
、math
、datetime
等。它们会随 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.py
、sys.py
、math.py
等 Python 标准库模块。这些模块是由 Python 官方维护和提供的,安装时会自动包含在内。
4. 查看模块安装位置
如果你想查看某个标准库模块(如 sys
)的安装位置,可以使用模块的 __file__
属性。不过,对于一些内建模块(如 sys
、math
),它们没有 __file__
属性,因为它们是在 Python 解释器启动时编译进内存的。
python
Copy code
import sys
print(sys.__file__) # sys 模块没有 __file__,会抛出 AttributeError
对于像 os
、datetime
等模块,它们通常是 .py
文件,因此可以用 __file__
查看其位置:
python
Copy code
import os
print(os.__file__) # 输出 os 模块的安装路径
5. 标准库更新和安装
标准库与 Python 解释器一起更新,通常不可单独更新。如果你需要特定版本的标准库,通常需要更新整个 Python 安装版本。你可以通过以下方式安装或更新 Python:
总结
- Python 自带的模块(标准库)安装在 Python 安装目录下,具体路径依赖于你的操作系统和 Python 版本。
- 你可以使用
sys.prefix
或sys.path
查看 Python 安装目录和标准库路径。 - 标准库通常位于 Python 安装目录的
lib/pythonX.Y/
子目录中。
通过这些方法,你可以轻松查找 Python 自带模块的位置。