python import 自己的包
在写python时,有时候写的一个python文件可能需要被其他python文件所用,那么可以用导入包 import 的 方式:
1.自己写的包放到哪里?
>>> import sys
>>> sys.path
['', '/usr/lib64/python34.zip', '/usr/lib64/python3.4', '/usr/lib64/python3.4/plat-linux', '/usr/lib64/python3.4/lib-dynload', '/usr/lib64/python3.4/site-packages', '/usr/lib/python3.4/site-packages']
可以看到上面列举了一些文件夹地址,那么自己写的包理论上都可以放到上述地址中,但有一些如”/usr/lib64/python3.4“并不推荐,比较推荐的是:“” , “'/usr/lib/python3.4/site-packages'”, “'/usr/lib64/python3.4/site-packages'”
2.如何导入自己写的包?
比如“/usr/lib/python3.4/site-packages”,如果我写了 一个 exp.py 文件放在这个文件下,那么我在自己的系统写的 python3 文件都可以采用 import exp 导入。
还可以看到还有一个是“”,及当前文件夹,假如 存在如此的 一个 文件 结构:
parent/
one/
__init__.py
exp.py
exp2.py
exp3.py
exp.py和exp2.py都在one目录下,那么在exp2.py中可以通过 import exp 导入exp.py
而exp3.py和one都处在parent目录下,那么在exp3.py中可以通过 import one.exp 导入exp.py
3.__init__.py的作用
偶尔可以看到有些人写的包下面还会有一个__init__.py,它的作用是在导入包时首先执行的。
假设在 exp3.py 中写入 import one.exp ,那么会首先执行 __init__.py 文件,接着会执行exp.py文件
如果不需要,__init__.py可以为空,也可以干脆不加入__init__.py
4.if __name__ == "__main__"
也有时候会看到 .if __name__ == "__main__" 语句,它的作用就是当此文件没有被作为导入的文件使用时执行 if 语句块里的程序。
假如 exp.py 中加入了 if __name__ == "__main__" ,然后 python3 exp.py,就会执行这个语句块里的内容
而 如果 if __name__ == "exp",时则是被 其他文件 以 "import exp"导入时执行的部分
有如果是 if __name__ == "one.exp",时则是被 其他文件 以 "import one.exp"导入时执行的部分
注意 在 "import exp"时是不会执行 if __name__ == "one.exp"中的内容的!同样: "import one.exp“是不会执行 if __name__ == "exp"中的内容的
python import 自己的包的更多相关文章
- python import eventlet包时提示ImportError: cannot import name eventlet
root@zte-desktop:/home/ubuntu/python-threads# cat eventlet.py #!/usr/bin python import eventlet from ...
- [Python]import使用的疑难杂症与包管理
概念:模块与包 模块module:一般是以.py为后缀的文件,也包括.pyo..pyc..pyd..so和.dll后缀的文件,模块内定义了函数.类以及变量 包package:包是含有若干个模块的文件夹 ...
- python import, from xx import yy
区别: 用import modulexx/packagexx.moduleyy是导入某一模块,如果想引用模块的内容(class, method,variables...)必须用全名,即 [module ...
- python 深入模块和包
模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...
- (Python )模块、包
本节开始学习模块的相关知识,主要包括模块的编译,模块的搜索路径.包等知识 1.模块 如果我们直接在解释器中编写python,当我们关掉解释器后,再进去.我们之前编写的代码都丢失了.因此,我们需要将我们 ...
- Python Import 详解
http://blog.csdn.net/appleheshuang/article/details/7602499 一 module通常模块为一个文件,直接使用import来导入就好了.可以作为mo ...
- python socket发送魔法包网络唤醒开机.py
python socket发送魔法包网络唤醒开机.py 现在的电脑应该都普遍支持有线网络的WOL了,支持无线网络唤醒的电脑,可能比较少. """ python socke ...
- Python下科学计算包numpy和SciPy的安装
转载自:http://blog.sina.com.cn/s/blog_62dfdc740101aoo6.html Python下大多数工具包的安装都很简单,只需要执行 “python setup.py ...
- python编写网络抓包分析脚本
python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 ...
随机推荐
- 初识JavaScript,感觉整个人都不好了。。。
学习web前端的开发已经将近一个月了,开发中的三个大兄弟——“html”.“css”.“JavaScript”,小哥我已经深入接触了前两位,并与他俩建立的深厚的友谊.在编写过程中,不能说达到各位大神的 ...
- java设计模式之 单例模式 Singleton
static 的应用 单例模式 Singleton 单例:保证一个类在系统中最多只创建一个实例. 好处:由于过多创建对象实例,会产生过多的系统垃圾,需要GC频繁回收,由于GC会占用较大的系统资源,所有 ...
- 【java】静态方法声明与调用习题
public class dengd { static int getTt(int table[]) { for(int b=0; b<table.length;b++) { System.ou ...
- CSS转载备忘
原文地址:http://www.cnblogs.com/coffeedeveloper/p/3145790.html#html 转载内容: 对CSS中的Position.Float属性的一些深入探讨 ...
- J2SE知识点摘记(十八)
Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念: 1) Collection . 一组对立的元素,通常这些元素都服从某种规则.List必须保持元素特定的顺序,而Set 不能有重复 ...
- 【Windows 8 Store App】学习三:HTTP
原文 http://www.cnblogs.com/java-koma/archive/2013/05/22/3093309.html 1,HttpClient Win 8提供了System.Net. ...
- [LeetCode][Python]14: Longest Common Prefix
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/longest ...
- javascript数组排序-----1
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 自己写的sql server触发器练练--高手请您跳过吧
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER TRIGGER [insertReplyToic] ON [dbo].[bbsReplyTopic] ...
- 自学JQuery Mobile的几个例子
JQuery Mobile是一个用于构建移动Web应用程序的框架,适用于主流的移动设备(智能手机.平板电脑),该框架利用了HTML5和CSS3技术减少了额外的脚本文件的编写.具体JQuery Mobi ...