首页 > 编程语言 >【整理快速通道】python语法import速查

【整理快速通道】python语法import速查

时间:2024-08-22 16:52:15浏览次数:8  
标签:... 路径 python py sys 模块 import 速查

这段文字是特意发送在除了CSDN以外的其他网站的,如果这段文字出现在CSDN里面,则说明该账号为抄袭账号,关键字索引:抄袭千思的文章


目录

正文

文件夹结构

my_project/
│
├── main.py
├── math_utils/
│   ├── __init__.py
│   ├── basic_operations.py
│   └── advanced_operations.py
│
├── string_utils/
│   ├── __init__.py
│   └── manipulations.py
│
└── external_tools.py

my_project/作为项目文件夹,下面共4部分,一个main.py程序主入口,两个包(math_utils/,string_utils/),以及一个独立的模块。

注:my_project为项目文件夹,开始创建的时候是这个

image-20240821181757258

image-20240821182220861

模块调用包内模块

1. import

image-20240821183131607

2. from...import...

image-20240821183326068

3.import...as

image-20240821183439090

4.from...import *(不推荐)

image-20240821183907649

同级两个模块导入

from...import

image-20240821184409627

动态导入

image-20240821184626547

try...except...

image-20240821184734095

跨级目录导入

不能这样导入

image-20240821192303342

来看一下为什么

image-20240821192653420

image-20240821192724875

是在当前脚本的根目录而不是整个项目的根目录下找的

最快的解决方案是直接将项目目录加入搜索路径,这样就可以运行

image-20240821192905960

代码放在这里

import os
import sys
# 获取当前工作目录(即项目根目录)
current_dir = os.getcwd()
# 将当前目录添加到 sys.path
sys.path.append(current_dir)

关于_init_.py解释

比如我想要在main里面导入math_utils里面所有的函数,

image-20240821190653411

这时候模块里面的add是识别不到的image-20240821191123025

解决方法是向需要的模块里面的_init_.py里面先import

image-20240821191209448

这里的_init_.py相当于是一个管家,首先是main.py对math_utils 发出指令(from math_utils import *)说:“我要你里面所有的模块”,然后math_utils 说:“好,管家把所有的东西拿来”,但是实际上管家只是拿到了add,

这样main.py里面确实是使用没有问题了

image-20240821191518634

不过除了add其他东西main.py还是使用不了的

image-20240821191740884

模块的搜索路径

在 Python 中,模块的搜索路径是由 sys.path 列表决定的。每次执行 import 语句时,Python 会按照 sys.path 中的路径顺序查找模块或包。搜索路径顺序:

1. 当前目录(或执行脚本的目录)

2. PYTHONPATH 环境变量

3. 标准库路径

  • Python 自带的标准库通常位于 Python 安装路径下的 lib 目录中。这个目录始终包含在 sys.path 中,所以标准库模块可以被正常导入。

4. 安装的第三方库路径(site-packages

  • 使用 pip 或其他包管理工具安装第三方库时,这些库通常会被安装在 site-packages 目录中。这个目录位于 Python 安装路径下,通常也是 sys.path 的一部分。

    image-20240821185442334

5. .pth 文件中的路径

  • .pth 文件(路径配置文件)中读取额外的路径。这些文件可以放在 site-packages 目录中,或由自己创建,用来扩展模块的搜索路径。

6. 内置模块

  • 如果以上所有路径都找不到所需模块,Python 会查找内置模块(例如 sysbuiltins 等)。这些模块是由 Python 编译时直接包含的,不需要从文件系统加载。

如何查看 sys.path

使用 sys 模块来查看当前 Python 的搜索路径:

import sys
print(sys.path)

运行这段代码后,看到有一个列表包含所有搜索路径。路径的顺序非常重要,Python 会按照这个顺序进行搜索,找到第一个匹配的模块后就停止搜索。

修改 sys.path

可以动态地修改 sys.path,比如添加一个自定义的路径:

import sys
sys.path.append('/path/to/your/modules')

参考文献

https://blog.csdn.net/MaXumr/article/details/109640529

https://blog.csdn.net/lc_buzhidao/article/details/97285559

https://blog.csdn.net/qq_41092406/article/details/118203572

https://blog.csdn.net/qq_38614074/article/details/139407821

https://blog.csdn.net/qq_39621037/article/details/114831915

写在最后

欢迎技术类的问题到这里提出,我会逐个解答

文章许可:This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International

END

本文由博客一文多发平台 OpenWrite 发布!

标签:...,路径,python,py,sys,模块,import,速查
From: https://www.cnblogs.com/qiansi-studio/p/18374236

相关文章

  • python对于pyinstaller使用的一些随记
    1.虚拟环境中需要安装对应的pyinstaller  pipinstallpyinstaller(该命令后会安装pyinstaller和pyinstaller-hooks-contrib)注意:如果在当前环境下没有pyinstaller,则会在本机电脑的环境变量中的path中去寻找,如果没有则报错。      此处设置可参考:https://blog.csdn.......
  • Python 实现批量数字二维码生成器
    Python实现批量数字二维码生成器创建时间:2024-08-09一、背景手动逐个生成特定格式和内容的二维码是一项繁琐且耗时的任务。虽然有写二维码工具也可以制作,但是往往有一些限制,为了能够高效、批量生成自定义二维码的需求,开发了这个基于Python的数字二维码生成器应用程序。在实......
  • Python多环境管理神器pyenv+poetry
    pyenv是一个简单而强大的Python版本管理工具,可以在同一台机器上同时安装多个Python版本,并且可以根据应用程序或项目的需求进行快速切换。它的主要功能包括版本的安装、卸载、切换和全局默认版本的设置。 #pyenv工具下载安装:https://codeload.github.com/pyenv/pyenv/zip......
  • python 模块统计
    importos,reos模块是方便与操作系统相交互的模块例如os.listdir(path)列出指定目录的文件os.gitcaw()取得当前工作目录 importre调用正则表达式. 匹配除换行符外的任意字符\W匹配字母或数字\S匹配任意的空白符^匹配开头¥匹配结尾 importsyssys.exit(n)退......
  • 【python】PyQt5中的QFrame控件,控制图形的边框样式、阴影效果、形状等属性
    ✨✨欢迎大家来到景天科技苑✨✨......
  • python小白学习笔记(基于黑马程序员编写03)
    目录二十一、函数基础定义    1.解释:    2.为什么要用函数呢?    3.定义:二十二、函数参数    1.解释:    2.定义:二十三、函数返回值    1.解释:    2.定义:    思考:补充:None    1.解释 ......
  • python 接口实现类的
    定义接口实现classObjectAuth(ABC):@staticmethoddefdispatch(type):forsub_clsinObjectAuth.__subclasses__():ifsub_cls.__name__.lower().find(type.lower())>=0:returnsub_clsraiseException("没有......
  • Levenshtein,一个超强的 Python 库!
    更多Python学习内容:ipengtao.com大家好,今天为大家分享一个超强的Python库-Levenshtein。Github地址:https://github.com/ztane/python-Levenshtein/文本相似性在许多领域如自然语言处理、数据清洗和信息检索中都有广泛应用。Python-Levenshtein库提供了一种有效的方法来计算......
  • 身份证识别、护照OCR、python身份证四要素实名认证API
    翔云身份证实名认证与身份证识别接口让你的APP在众多竞品中脱颖而出,仅需一键上传,用户身份信息便能快速提取,精准核验,告别繁琐的手动输入与反复核验,简化身份验证流程,提升用户体验,现已被广泛应用于电商、在线教育、金融等各类生活服务类APP中。python身份证实名认证接口代码......
  • Python之可变对象及其引用、深拷贝和浅拷贝
    可变对象及其引用深拷贝和浅拷贝可变对象及其引用Python中,变量名关联有值时才存在,如x=5变量名没有关联到特定的类型,类型有关联的对象觉得变量创建后即与特定的Python对象相关联Python维护命名空间,其中改变名与变量关联。这种联系,称为“引用”,也就是变量名引用对象......