python import 自己的包
阅读原文时间:2021年04月20日阅读:1

在写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 导入。

还可以看到还有一个是“”,及当前文件夹,假如 存在如此的 一个 文件 结构:

1
2
3
4
5
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"中的内容的