Python3导入自定义模块的3种方式
前话
最近跟着廖雪峰的教程学到 模块
这一节。关于如何自定义一个模块,如果大家不懂的话还请先看下面这篇博文 ↓
模块是个好东西啊,大牛们开源共享许多模块也加快了大家开发的速度,许多开源模块可以在这里找到 ↓
因为刚入门所有有很多细节不懂,在网上搜寻资料的时候发现各位大神们的教程实在太过于精简,让我这个菜鸟很辛苦的才操作成功。
因此在这里记录下来。
开始
第一种,直接 import
这里有个大前提,就是你的py执行文件和模块同属于同个目录(父级目录),如下图:
- main.py 和 pwcong模块同在python目录
- 执行文件为main.py
- pwcong文件夹为一个模块
我把pwcong模块提供的函数写在 __init__.py
里,里面只提供一个 hi
函数:
# pwcong 模块的 __init__.py
# -*- coding: utf-8 -*-
def hi():
print("hi")
执行文件main.py直接import模块:
# main.py
# -*- coding: utf-8 -*-
import pwcong
pwcong.hi()
接着我们运行一下main.py可以看到命令行窗口输出了一句 hi
,第一种方式完成。
使用模块方式为:先导入-》接着输入
模块.变量|函数
, 如上面例子的 pwcong.hi()
第二种,通过sys模块导入自定义模块的path
如果执行文件和模块不在同一目录,这时候直接import是找不到自定义模块的。如下图:
- 执行文件main.py在main目录下
- pwcong模块在python目录下
sys模块是python内置的,因此我们导入自定义模块的步骤如下:
先导入sys模块
然后通过
sys.path.append(path)
函数来导入自定义模块所在的目录导入自定义模块。
这时候 main.py 这样写:
# main.py
# -*- coding: utf-8 -*-
import sys
sys.path.append(r"C:\Users\Pwcong\Desktop\python")
import pwcong
pwcong.hi()
最后执行main.py文件,最终输出 hi
,第二种方式完成。
第三种,通过pth文件找到自定义模块
这个方法原理就是利用了系统变量,python会扫描path变量的路径来导入模块,可以在系统path里面添加。但是我还是推荐使用pth文件添加。
模块和执行文件目录结构跟上图一样:
- 执行文件main.py在main目录下
- pwcong模块在python目录下
我们创建一个 module_pwcong.pth 文件,里面内容就是 pwcong模块所在的目录:
C:\Users\Pwcong\Desktop\python
将该 module_pwcong.pth 文件放到这里:
python安装目录\Python35\Lib\site-packages
例如我的:
然后 main.py 导入并使用自定义模块:
# -*- coding: utf-8 -*-
import pwcong
pwcong.hi()
最后执行 main.py 文件,可以输出 hi
,第三种方式完成。
结束
到这里三种导入自定义模块的方式栗子就完成了,我写的应该很详细了吧 :)
Python3导入自定义模块的3种方式的更多相关文章
- python3导入自定义模块
模块是个好东西啊,大牛们开源共享许多模块也加快了大家开发的速度,许多开源模块可以在这里找到 ↓ https://pypi.python.org/pypi 因为刚入门所有有很多细节不懂,在网上搜寻资料的 ...
- python学习笔记:模块——自定义模块的3种导入方式
一.定义 模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.py文件里,而如果有些功能实现起来很复杂,那么就需要创建n个.py文件,这n个.py文件的集合就是模块.如果不懂 ...
- Dojo初探之2:设置dojoConfig详解,dojoConfig参数详解+Dojo中预置自定义AMD模块的四种方式(基于dojo1.11.2)
Dojo中想要加载自定义的AMD模块,需要先设置好这个模块对应的路径,模块的路径就是这个模块的唯一标识符. 一.dojoConfig参数设置详解 var dojoConfig = { baseUrl: ...
- iOS 自定义layer的两种方式
在iOS中,你能看得见摸得着的东西基本都是UIView,比如一个按钮,一个标签,一个文本输入框,这些都是UIView: 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层 在创建UIVi ...
- EntityFramework Core 2.0自定义标量函数两种方式
前言 上一节我们讲完原始查询如何防止SQL注入问题同时并提供了几种方式.本节我们继续来讲讲EF Core 2.0中的新特性自定义标量函数. 自定义标量函数两种方式 在EF Core 2.0中我们可以将 ...
- Eclipse导入SVN项目的三种方式
Eclipse导入SVN项目的三种方式 一.直接Import导入: 1.点击 File --> Import,进入导入项目窗口 2.选择从SVN检出项目,点击Next 3.选择创建新的资源库位置 ...
- 【python】导入自定义模块
一.直接import 1.当执行文件与要导入的py文件在同一目录下时 假设要在wangyi.py中导入weibo.py文件 import weibo 2.当执行文件与要导入的py文件所在文件夹在同一目 ...
- pycharm IDE在导入自定义模块时提示有错,但实际没错
在建立python项目时,有时为了区分资源和代码,如在项目文件夹下新建img和src两个文件夹,这时导入自定义模块会提示错误,结果没错但感觉别扭.如: 这是因为pycharm提示功能是从根目录上去寻找 ...
- vscode如何配置debug,python正则表达式如何匹配括号,关于python如何导入自定义模块
关于vscode如何配置debug的问题: 1.下载安装好python,并且配置好 环境变量 2.https://www.cnblogs.com/asce/p/11600904.html 3.严格按照 ...
随机推荐
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
1.非集成Spring hibernate的检索方式,主要有以下五种. 1.导航对象图检索方式.(根据已经加载的对象,导航到其他对象.) 2.OID检索方式.(按照对象的OID来检索对象.) 3.HQ ...
- Careercup - Microsoft面试题 - 5680049562845184
2014-05-10 06:51 题目链接 原题: "How would you find the number of gas stations in the United States?& ...
- 1、android orm之greendao
前提:最近写android项目,android自带数据库api有点复杂,于是偷懒用了greendao.greendao好处自己查,这里不赘述,但是零基础的的我用起来还是费了3天的功夫,取之于网络,特在 ...
- 【Path Sum】cpp
题目: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up ...
- 【Largest Rectangle in Histogram】cpp
题目: Given n non-negative integers representing the histogram's bar height where the width of each ba ...
- Android中的单位及测试相关概念
android中的单位: in 英寸 pt 点距 px 像素 dp(dip) 密度无关的像素单位,自适应device屏幕的比例,通常涉及长宽高时采用 sp 与范围无关的像素单位,通常在设置字体大小时 ...
- Byte measurements
- maven ArtifactTransferException: Failure to transfer
我在使用Myeclipse碰见这个错误,我没有用伺服,直接连接到maven中心. ArtifactTransferException: Failure to transfer org.apache.h ...
- 剑指offer--3题
题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.要求时间复杂度为O(n). 例如输入的数组为1, -2, 3, ...
- Poj 1032 分类: Translation Mode 2014-04-04 09:09 111人阅读 评论(0) 收藏
Parliament Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16521 Accepted: 6975 Descr ...