Python的包导入

Python import 的搜索路径顺序是:

  1. 在当前目录下搜索该模块 (包需要有__init__.py文件)
  2. 在环境变量 PYTHONPATH 中指定的路径列表中依次搜索 (在python中用sys.path来控制)
  3. 在 Python 安装路径的 lib 库中搜索

其中Python安装路径lib库比较复杂.

  • 对于Conda (相应环境也是), 会在lib文件夹内搜索.
    • lib文件夹内有大量动态库, 包括包依赖的经编译的动态库. 实际该文件夹下并不包含py文件, 因此不是真正的搜索目录.
    • lib内的python2.Xpython3.X内是标准库 (内建模块)的py文件, 实际搜索时将搜索该文件夹.
    • python2.X/site-packages 该文件夹内是安装的外部包. 有些模块直接.py形式存在, 包则以子文件夹形式存在. 其中还有一些*-info的文件夹, 储存了一些包的相关信息(版本, 依赖等等).
    • 对于conda的虚拟环境, 实际相应的lib文件夹会是envs/虚拟环境名/lib.

在anaconda文件夹内, bin是各种可执行文件. include是各种头文件, etc是各种设置参数和加载配置. share含有各种其他资源(如图片, 数据, manual), pkgs是各种包的下载安装文件. var主要是一些cache等.

  • 对于Mac系统, 实际Python是在/System/Library/Frameworks/Python.framework/Versions/2.7/. 同样也会有bin, lib, include文件夹. 实际上不会用原生python. 因此不需理会.
  • 对于Homebrew安装的python, 坐落在/usr/local/Frameworks/Python.framework/Versions/2.7类似的文件夹, 同样也会包含bin, etc, include, lib等文件夹. 实际上, 真正的路径是: /usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7

未完...待补充...

你可能感兴趣的:(Python的包导入)