这是简书的一个参考链接:https://www.jianshu.com/p/178c26789011
作者写的蛮不错的。
抬头就有非常重要的一段语录,我复制了下来。
package的初始化工作
一个package 被导入,不管在什么时候__init__.py
的代码都只会被执行一次
>>> import package
hello world
>>> import package
>>> import package
由于 package 被导入时 __init__.py
中的可执行代码会被执行,所以小心在 package 中放置你的代码,尽可能消除它们产生的副作用,比如把代码尽可能的进行封装成函数或类。
__init__.py
内的导入顺序
当我尝试导入
from package import something
import
语句会首先检查something
是不是__init__.py
的变量,然后检查是不是subpackage
,再检查是不是module
,最后抛出ImportError
所以检查顺序如下:
__init__.py
文件内变量- 是不是package内的
subpackage
- 是不是package内的
module
Python的环境变量,就是Python在运行的时候,添加模块的一系列路径,用于导入模块的时候,需要查找的模块的相对起始路径。
首先给自己强调一点,Python在运行的时候,通过主文件运行,[无论是python xxx.py或者python abc/ccc/xxx.py]Python解释器会自动把该模块运行的目录添加到环境变量中,而且还目录具有第一优先级
也就是说,在导入模块的时候,项目下的模块导入具有第一优先级。
后面写一些自己的感受。
当我们在运行一个Python项目,首先需要一个启动模块,也就是启动文件。这个跟计算机系统的运行原理差不多,一个进程的启动,必须由父进程来辅助其启动。
运行环境相对还是比较简单,就是一些绝对路径,模块的话相对比较复杂一些。