Python-官网安装包的结构

  1. 从官网下载的python有什么东西
  2. python的包在哪里
  3. python的虚拟环境
    1. venv
    2. Anaconda

从官网下载的python有什么东西

在python官网上, 可以找到mac平台下的installer, 格式是pkg, 借助Suspicious Package, 可以清晰地看到这个下载器在什么地方安装了什么东西:

image-20230619195133700

其中的可执行文件有如下四种:

  • python: 这个是python脚本的解释器.
  • pydoc: 查看python一些模块, 函数的文档, 例如命令行中使用pydoc os可以查看os模块的文档.
  • idle: idle的全程是Integrated Development Environment, 运行这个可执行文件可以得到一个python的交互式shell.
  • 2to3: 这个程序用于将python2代码转换成python3代码.
  • python3-config: 用于查询python解释器的相关信息的程序, 可以查询解释器的编译, 链接选项等等.

其中, ****3是LTS, 而***3.11是最新版本.

除此之外, 在pkg下载器的postinstall脚本中, 还可以发现自动安装了pip3pip3.11, 安装目录仍然是/usr/local/bin:

image-20230619200414689

python的包在哪里

  • python3可执行文件在某个bin目录中.
  • python3解释器中, 规定了两个站点:
    • 全局站点: 所有用户都能用, 一般在某个bin目录同级的lib目录.
    • 用户站点: 单个用户可以用, 一般是~/.local/lib这种目录.
    • 可以使用python3 -m site查看解释器规定的站点
  • pip3下载时, 默认下载到全局站点, 如果有--user, 那么会下载到用户站点.

  • import时解释器找的模块在哪里, 这个问题可以用如下代码解决:

    import module_name
    
    module_file = module_name.__file__
    print(module_file.__file__)
    

    一般会从解释器的全局站点和用户站点的路径中搜索.

python的虚拟环境

venv

从官网上下载的解释器默认就支持venv.

使用python3 -m venv <虚拟环境名称>就可以在某一个目录中创建虚拟环境, 创建后的目录结构如下:

image-20230620120735680

可以看到, 本质上还是把python3的那一套搬到了这个目录, 在这个目录下的pip3python3都是bin目录下的可执行文件.

Anaconda

  • conda是一个增强版的python, 其中比原版的python包含了更多有用的可执行文件, 例如ipython, pylint, pylsp等, 还包括conda的一些可执行文件.

  • conda下载并且初始化完之后, 默认你当前的虚拟环境名称是base, 其中这个环境的可执行文件一般在~/anaconda/bin.

  • 当你用conda create创建了虚拟环境, 并且用conda install下载了包, 那么环境在~/anaconda/envs/<你的虚拟环境>中.
  • 切换虚拟环境时, 环境变量PATH会改变, 执行python3解释器时, 解释器是不同python环境下的解释器.
  • 在虚拟环境中conda installpip install的区别:
    • 相同点: 下载的路径没有区别, 都是在python站点下进行下载.
    • 不同点:
      • conda可以下载并管理非python包, 下载路径在~/anaconda/pkgs, 例如ffmpeg.
      • 当base环境中有包, 但是在另一个虚拟环境A中再次用conda install下载时, 这时conda install不会真的下载, 而是关联base环境. 但是pip3依旧会下载, 因为pip3只负责处理自己所在的虚拟环境.