模块的搜索路径

目录

  • 模块搜索路径的顺序(掌握)

    • 验证先从内存中找
    • 验证先从内置中找
    • 验证从sys.path中找
  • 搜索路径以执行文件为准(掌握)

模块搜索路径的顺序(掌握)

模块其实就是一个文件,如果要执行文件,首先就需要找到模块的路径(某个文件夹)。如果模块的文件路径和执行文件不在同一个文件目录下,我们就需要指定模块的路径。

模块的搜索路径指的就是在导入模块时需要检索的文件夹。

导入模块时查找模块的顺序是:

  1. 先从内存中已经导入的模块中寻找
  2. 内置的模块
  3. 环境变量sys.path中找
import sys
print(f"sys.path: {sys.path}")

'''
['/Users/mac/Desktop/video/python/day16',
'/Users/mac/Desktop/video/python',
'/Applications/anaconda3/lib/python36.zip',
'/Applications/anaconda3/lib/python3.6',
'/Applications/anaconda3/lib/python3.6/lib-dynload',
'/Applications/anaconda3/lib/python3.6/site-packages',
'/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend']
'''

强调:sys.path的第一个值是当前执行文件的所在的文件夹

验证先从内存中找

如果我们在运行run.py文件的时候,快速删除mmm.py文件,我们会发现文件会继续运行,而不会报错,因为mmm已经被导入内存当中。如果我们再一次运行run.py时会报错,因为mmm.py已经被删除了。

# mmm.py

def f1():
    print('from mmm.py f1')
# run.py
import time
import mmm

time.sleep(10)
import mmm
mmm.f1()  # from mmm.py f1

验证先从内置中找

# time.py
print('from time.py')
# run.py
import time
print(time)  # <module 'time' (built-in)>

验证从sys.path中找

如果mmm.py在/Users/mac/Desktop/video/python路径下,而执行文件路径为/Users/mac/Desktop/video/python/day16,如果普通导入一定会报错,我们可以把/Users/mac/Desktop/video/python添加到环境变量sys.path中,防止报错。

# run.py
import sys
sys.path.append(r'/Users/mac/Desktop/video/python')
print(sys.path)

import mmm
mmm.f1()

搜索路径以执行文件为准(掌握)

假设我们有上述的目录结构的文件,文件内代码分别是:

# m1.py

import sys
print('模块m1中查看的结果',sys.path)
# import m2
from dir1 import m2
m2.f2()
# m2.py

import sys
print(sys.path)

def f2():
    print('from f2')
# run.py
import sys
print('执行文件查看的结果:',sys.path)
from dir1 import m1

其中run.py文件的执行路径是/Users/mac/Desktop/video/python/day16/模块搜索路径练习,如果我们在m1.py中直接使用import m2导入m2会报错,而使用from dir1 import m2导入m2则会成功,因为搜索路径以执行文件为准,dir1和run.py是同目录下的,因此run.py的环境变量能找到dir1;而m2和run.py不是同目录下的,因此run.py的环境变量无法直接找到m2。

原文地址:https://www.cnblogs.com/nickchen121/p/10802417.html

时间: 2024-11-16 06:47:32

模块的搜索路径的相关文章

python import模块的搜索路径

当在py代码中import所依赖的模块时, python是从哪里找到这些模块呢,即模块的搜索路径是啥? 默认情况下,Python解释器会搜索当前目录.所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中: >>> import sys >>> sys.path ['', 'C:\\Windows\\system32\\python27.zip', 'd:\\Program Files\\python27\\DLLs', 'd:\\Program F

导入模块的搜索路径以及sys.path

模块的搜索顺序 #内存---->内置------>sys.path import sys print(sys.path) #打印出当前的sys.path的搜索路径,在内存和内置中都找不到该模块的情况下会到下面的这些路径逐个去找,并以打印出的顺序作为优先级. #['D:\\Python_OldBoy\\day05\\模块与包', 'D:\\Python_OldBoy', 'C:\\Users\\dell\\AppData\\Local\\Programs\\Python\\Python35\\p

【python学习笔记】模块导入搜索路径的搜索顺序是什么?

搜索顺序应该是? 内置模块 ->主目录 ->PYTHONPATH环境变量 ->标准库 ->.pth文件指定的内容 所以如果主目录里有一个自定义的模块文件文件,应该会先加载,然后后面标准库的模块文件可能就不会加载了,也就是隐藏了. 还是实验一下: 创建一个sys.py在主目录下,以下是在windows的py3.5上实验的,sys.py内容: # filename sys.py in current working directory def func():     print('Th

Python 安装模块 & 模块搜索路径

1.1   安装模块 1.1.1   安装第三方模块 第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索,比如Pillow的名称叫Pillow pip install Pillow 1.1.2   模块搜索路径 当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错: >>> import mymodule Traceback (most recent c

Python学习笔记-模块介绍(三)-模块包和搜索路径

一个python文件就是一个模块,使用独立的命名空间,但实际使用过程中单单用模块来定义python功能显然还不够.因为一个大型的系统几千上万个模块是很正常的事情,如果都聚集在一起显然不好管理并且有命名冲突的可能,因此python中也出现了一个包的概念. 一.python中的包介绍 包是通过使用"点模块名称"创建Python模块命名空间的一种方法.列如,模块名称 A.B 表示一个在名为 A的包下的名为B的子模块.就像使用模块让不同模块的作者无需担心彼此全局变量名称(冲突)一样,点模块名称

python模块搜索路径

1.电脑版 (1).python安装目录中\Lib\site-packages\下建立*.pth文件,写入模块路径 (2).添加环境变量:变量名:pythonpath;变量值:模块(文件夹)路径 ,若有多个,用半角分号";"隔开 2.手机版 在resource\site.py文件中添加代码段 import syssys.path.append("模块(文件夹)路径") 发现:第一个参数都是C:\\resource 我的理解: 程序安装盘下的site.py指定模块路径

python在Ubuntu添加模块搜索路径

本文我们来分享python添加模块搜索路径的3个方法,另外不补充了篇"为Python添加默认模块搜索路径". 大约有这么几种方法: 1.添加环境变量PYTHONPATH,python会添加此路径下的模块,在.bashrc文件中添加如下类似行: export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages 2.在site-packages路径下添加一个路径配置文件,文件的扩展名为.pth,内容为要添加的路径即可

修改模块搜索路径(注意:py运行完毕,就会失效,他只是临时产生效果)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #修改模块搜索路径(注意:py运行完毕,就会失效,他只是临时产生效果) import sys print sys.path ''' ['C:\\Users\\Administrator\\Desktop', 'C:\\Python27\\Lib\\idlelib', 'C:\\Python27\\lib\\site-packages\\xlwt-1.0.0-py2.7.egg', 'C:\\Python27

为Python添加默认模块搜索路径

为Python添加默认模块搜索路径 方法一:函数添加 1) import sys 2) 查看sys.path 3) 添加sys.path.append("c:\\") 方法二:修改环境变量 windows用户可以修改系统环境变量PYTHONPATH 方法三:增加.pth文件,推荐! 在site-packages添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称就是了. 1) windows c:\python27\site-pack