python 如何找到import的包

Python import 时会首先寻找 sys.path 中列出的路径,通常是这样:

>>> import sys
>>> '\n'.join(sys.path)

/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages

那么 Python 是如何获取 sys.path 的呢?根据 Python 的文档,首先是当前目录,然后是 PYTHONPATH 环境变量,再之后是安装时设置的默认目录,由 site 模块控制。

Python 在启动的时候会自动引用 site 模块,关于它是如何操作 sys.path 的,可以参考相关文档

当然,你也可以手动操作 sys.path,这同样会影响会话期间 Python 寻找包的行为。

imp 模块

Python 的 import 流程由 imp 模块 控制,因此我们可以完全自己手动控制库的 import 过程。

使用 imp.find_module 来寻找模块:

>>> import imp
>>> imp.find_module('numpy')
(None, '/usr/local/lib/python2.7/dist-packages/numpy', ('', '', 5))

当然,我们可以使用 imp.load_source 直接 import 某个包文件并指定其包名。

imp.load_source('module_name', 'module_full_path')

print(module_name)
python – dist-packages和site-packages有什么区别?
  1. sudo apt-get install 安装的package存放在 /usr/lib/python2.7/dist-packages目录中
  2. pip 或者 easy_install安装的package存放在/usr/local/lib/python2.7/dist-packages目录中
  3. 手动从源代码安装的package存放在site-packages目录中


  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值