在C语言里为了工程文件的主程序main代码简洁的效果,我们经常用include“XXX”的来导入其.h文件

在Python里Import自己的自定义模块需要注意几个坑

以main主函数和需要导入的halo模块为例:

一、一般Import只需要将main.py和halo.py放在同一个文件夹即可成功导入

'''
main.py里直接导入使用即可
''' import halo
halo.hello('kumata') #输出hello,kumata

二、当不在同一个文件夹的时候,在halo的文件夹(kk)里命名__init__.py文件

__init__.py文件相当于一个标记作用,一个文件夹中包含这个文件,那么该文件夹在Python中被定义为Module,__init__.py中可以什么都不写,只要存在就行了。

'''
要注意主程序里import的写法(加了__init__.py之后kk就是一个package了)
''' from kk import halo
halo.hello('kumata') #输出 hello,kumata

三、使用sys在path中加入模块的路径

需要自己定义模块的存放位置就要先添加自己的路径到sys.path,通过sys.path.append(‘dir’)来添加自己的模块存储路径,其实就是像目录列表中添加一个元素

'''
以halo.py为例子
halo.py的路径为:C:\Users\BEAR\Desktop\Training\5.函数\kk ''' import sys
sys.path.append(r'C:\Users\BEAR\Desktop\Training\5.函数\kk') from kk import halo halo.hello('kumata')
#hello, kumata #也可以查看path都有哪些
print(sys.path)
'''
['C:\\Users\\BEAR\\Desktop\\Training\\5.函数', 'C:\\Users\\BEAR\\Desktop\\Training', 'C:\\Users\\BEAR\\Desktop\\Training\\venv\\Scripts\\python37.zip', 'C:\\python\\DLLs', 'C:\\python\\lib', 'C:\\python', 'C:\\Users\\BEAR\\Desktop\\Training\\venv', 'C:\\Users\\BEAR\\Desktop\\Training\\venv\\lib\\site-packages', 'C:\\Users\\BEAR\\Desktop\\Training\\venv\\lib\\site-packages\\setuptools-39.1.0-py3.7.egg', 'C:\\Users\\BEAR\\Desktop\\Training\\venv\\lib\\site-packages\\pip-10.0.1-py3.7.egg', 'C:\\Users\\BEAR\\Desktop\\Training\\5.函数\\kk']
'''
#可以看到python的所有检索范围,而排在第一位的就是当前目录

Python:导入自定义模块的更多相关文章

  1. python导入自定义模块

    上网查了下资料和自己实验了下,有几个方法: 1.如果导入的模块和主程序在同个目录下,直接import就行了 2.如果导入的模块是在主程序所在目录的子目录下,可以在子目录中增加一个空白的__init__ ...

  2. python导入自定义模块和包

    参考资料 https://blog.csdn.net/gvfdbdf/article/details/52084144 http://www.runoob.com/python/python-modu ...

  3. python 导入自定义模块

    1. 2.

  4. 【python】导入自定义模块

    一.直接import 1.当执行文件与要导入的py文件在同一目录下时 假设要在wangyi.py中导入weibo.py文件 import weibo 2.当执行文件与要导入的py文件所在文件夹在同一目 ...

  5. vscode如何配置debug,python正则表达式如何匹配括号,关于python如何导入自定义模块

    关于vscode如何配置debug的问题: 1.下载安装好python,并且配置好 环境变量 2.https://www.cnblogs.com/asce/p/11600904.html 3.严格按照 ...

  6. Python3导入自定义模块的3种方式

    前话 最近跟着廖雪峰的教程学到 模块 这一节.关于如何自定义一个模块,如果大家不懂的话还请先看下面这篇博文 ↓ http://www.liaoxuefeng.com/wiki/001431608955 ...

  7. python3导入自定义模块

    模块是个好东西啊,大牛们开源共享许多模块也加快了大家开发的速度,许多开源模块可以在这里找到 ↓ https://pypi.python.org/pypi 因为刚入门所有有很多细节不懂,在网上搜寻资料的 ...

  8. pycharm IDE在导入自定义模块时提示有错,但实际没错

    在建立python项目时,有时为了区分资源和代码,如在项目文件夹下新建img和src两个文件夹,这时导入自定义模块会提示错误,结果没错但感觉别扭.如: 这是因为pycharm提示功能是从根目录上去寻找 ...

  9. python 导入re模块语法及规则

    正则表达式是功能比较强大的模块,应用在很多地方,抓网页,数据分析,数据验证等,下面讲述python 导入re模块语法及规则. 1,re模块语法 re.match 从头开始匹配 re.search 匹配 ...

随机推荐

  1. MySQL 清除从库同步信息

    实际的业务生产系统中,mysql从库有时候会根据实际需求变更为主库,这时候我们需要清除掉从库配置的主从信息登录从库执行以下命令:mysql> stop slave;mysql> reset ...

  2. 第三部分:Android 应用程序接口指南---第四节:动画和图形---第一章 属性动画及动画与图形概述

    第1章 属性动画及动画与图形概述 Android提供了一系列强大的API来把动画加到UI元素中,以及绘制自定义的2D和3D图像中去.下面的几节将综述这些可用的API以及系统的功能,同时帮你做出最优的选 ...

  3. django template if return false

    如果if的参数不存在于context中就会返回false 参考:http://stackoverflow.com/questions/11107028/django-template-if-true- ...

  4. 开源网络库ACE、Boost的ASIO、libevent、libev、ZeroMQ

    开源C/C++网络库:ACE          C++语言 跨平台Boost的ASIO  C++语言 跨平台libevent     C语言   主要支持linux,新版增加了对windows的IOC ...

  5. iproute2应用

    linux目前都支持ip命令,与ifconfig类似,但ifconfig的软件net-tools早不更新了,ip功能更强大,推荐使用iproute2套件. ip可以完美替换常用的网络命令,用法如下: ...

  6. segMatch:基于3D点云分割的回环检测

    该论文的地址是:https://arxiv.org/pdf/1609.07720.pdf segmatch是一个提供车辆的回环检测的技术,使用提取和匹配分割的三维激光点云技术.分割的例子可以在下面的图 ...

  7. 川崎机器人c#通讯(转)

    由于本人在工业自动化行业做机器视觉的工作,所以除了图像处理方面要掌握外,还需要与工业机器人进行通信.最近学习了计算机与川崎机器人的TCP/IP通信,于是在这里记录一下. 除了直接与机器人通信外,有一种 ...

  8. (转)基于形状匹配的Halcon算子create_shape_model

    HDevelop开发环境中提供的匹配的方法主要有三种,即Component-Based.Gray-Value-Based.Shape-Based,分别是基于组件(或成分.元素)的匹配,基于灰度值的匹配 ...

  9. Java知多少(85)文本框和文本区

    在图形界面中,文本框和文本区是用于信息输入输出的组件. 文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框.JTextField类用来建立文本框.与文本框相关的接口是Action ...

  10. Json Web Token(JWT)

    Json web token (JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(Si ...