python模块

python script.py和python -m pakcge_name的区别

区别:
第一种写法,会以script.py所在的路径作为current_directory。
第二种写法,会以cmd所在的路径作为current_directory。

第一种叫做直接运行。
第二种叫做以模块方式运行。注意,是用(.)而非(/)来分隔,且不用加后缀(.py)。

sys.path

import sys
print(sys.path)

sys.path的来源
{
    1. 当前目录
    2. PYTHONPATH
    3. Python默认安装路径
}

python script.py 会把script.py文件所在目录,添加到sys.path中。
python -m pakcge_name 会把cmd所在的路径 ...

模块的导入机制

sys.path
sys.modules
.dict

sys.path,是list,模块的搜索路径。添加路径可以使用,sys.path.append()

import 某个模块
{
    1. sys.modules中是否已经加载。
    2. 已加载,把模块名字加入到正在调用的 import 的模块的Local命名空间。即.dict
    3. 没有加载。
    {
        1. 从sys.path 查找,并加载到内存
        2. 加入到sys.modules字典
        3. 将名称导入当前模块的Local命名空间
    }
}