当前位置:首页>python>深入学习 python -m xx

深入学习 python -m xx

  • 2026-04-02 05:45:46
深入学习 python -m xx

使用 python -m <模块名> 启动 Python 模块时,解释器首先定位并加载指定的模块或包,然后将其内容作为 __main__ 模块执行

如果 <模块名> 对应的是一个包(即目录),解释器会先导入该包(运行其 __init__.py,若存在),然后查找并执行该包下的 __main__.py。因此,运行 python -m <包名> 时,若该包含有 __main__.py,则会依次执行 __init__.py(如果存在)和 __main__.py;若没有 __main__.py,则导入包后报错(**ImportError: No module named <pkg>.__main__; '<pkg>' is a package and cannot be directly executed**)。

对于命名空间包(PEP 420,即无 __init__.py 的包),行为类似:如果有 __main__.py 则执行它,否则报错。

本文详细比较了不同情况下 -m 的行为,说明了 __init__.py 在何时运行、何时不运行,以及常见陷阱,并通过示例代码加以演示和验证。

python -m 的官方文档

python -m <module-name> 会在 sys.path 上查找给定的模块,并将其内容作为 __main__ 模块执行。注意 <module-name> 必须是模块名(不带 .py 扩展),如果指定的是包名(包括命名空间包),解释器将执行 <pkg>.__main__ 子模块。

  • 普通模块:如 python -m foo(假设 foo.py 存在并在 sys.path 上可见),则直接执行 foo.py,行为等同于直接运行脚本文件,只不过 __name__ 被设为 "__main__"。在这个过程中没有任何包被导入,也不会执行 __init__.py

  • :如 python -m pkg,则先 导入包本身(即执行 pkg/__init__.py,将包对象放入 sys.modules),再尝试执行 pkg/__main__.py。如果 __main__.py 不存在,会报错提示无法直接执行包(通常输出 No module named pkg.__main__; 'pkg' is a package and cannot be directly executed),但包的 __init__.py 已经执行。

  • 模块文件 vs 包目录:如果使用脚本路径直接执行,如 python somepath/pkg(调用解释器时直接传入目录),则同样执行该目录下的 __main__.py。但 -m 不接受文件路径,只能接受模块名(包名)。

  • 命名空间包:PEP 420 引入了无 __init__.py 的命名空间包。官方文档提到 -m 支持命名空间包,行为与普通包类似:如果命名空间包含有 __main__.py,则执行它;否则会报错。由于没有 __init__.py,仅执行 __main__.py 而无初始化代码。

runpy.run_module 与导入机制

-m 选项的实现依赖于标准库的 runpy 模块。其核心函数 run_module(mod_name, run_name="__main__", alter_sys=True) 会先通过 import 机制定位并加载模块或包,然后执行代码。当 mod_name 是包名时,runpy 会 先导入该包,然后执行其 __main__ 子模块。

为了可靠定位模块,-m 实现中需要 导入包含该模块的包。因此,执行 python -m pkg.submod 时,首先会导入 pkg(执行 pkg/__init__.py),然后找到 pkg.submod 并执行。如果目标模块本身就是包名,则如上执行其 __main__.py。这种导入行为会导致包初始化的副作用(例如修改 sys.path、注册钩子等)生效,并且包会被放入 sys.modules。比如:

  • 包导入副作用run_module 在找到 pkg.__main__ 之前,会 __import__("pkg")。这意味着 pkg/__init__.py 中的代码会执行一次,并在 sys.modules 中注册 pkg。任何注册的钩子、全局变量等都已生效,随后再执行 __main__.py

  • __name__ 设置:被执行的模块会被当作顶级脚本运行,其 __name__ 被设为 "__main__"。例如,包的 __main__.py 中的 __name__ 为 "__main__"。这也意味着包的其余部分以正常导入模块的方式存在,只有 __main__.py 的代码在 __main__ 命名空间中执行。

  • 线程安全注意run_module(..., alter_sys=True) 会临时更改 sys.argv[0] 和 sys.modules["__main__"] 等,执行完毕后恢复原状。这使得运行时错误等栈信息看起来仿佛是在正常脚本中发生的。需要注意的是,这种操作在线程中可能不安全,应避免并行使用。

包 与 模块文件执行的差异

  • 模块文件执行:直接运行模块文件(python mod.py)或通过 python -m mod,如果 mod 是独立 .py 文件,则都会执行该文件。**此时不会执行任何 __init__.py**,因为没有关联包被导入。下面示例演示在当前目录存在 hello.py 时,两种方式结果相同:
$ cat hello.pyprint("Hello from module")$ python hello.pyHello from module$ python -m helloHello from module

“搜索 sys.path 找到模块并将其内容作为 __main__ 执行”。

  • 包执行:如果以包名形式执行(-m pkg),则一定先执行该包的初始化(__init__.py),再执行其 __main__.py。若 __main__.py 不存在,则即使执行失败,__init__.py 已经运行。示例:

    $ tree mypkgmypkg/├── __init__.py    # 包初始化文件└── __main__.py    # 主脚本$ cat mypkg/__init__.pyprint("mypkg __init__")$ cat mypkg/__main__.pyprint("mypkg __main__")$ python -m mypkgmypkg __init__mypkg __main__

    如果删除 __main__.py 再执行:

    $ rm mypkg/__main__.py$ python -m mypkgmypkg __init__Traceback (most recent call last):  ...ImportError: No module named mypkg.__main__; 'mypkg' is a package and cannot be directly executed

    可以看到,**mypkg/__init__.py 被执行了**(输出 “mypkg __init__”),然后由于缺少 __main__.py 导致错误。

  • 子模块执行:若指定包中某个模块,如 python -m pkg.mod,解释器同样先导入 pkg(运行 pkg/__init__.py),然后执行 pkg/mod.py。例:

    $ tree pkgpkg/├── __init__.py└── mod.py$ cat pkg/__init__.pyprint("pkg init")$ cat pkg/mod.pyprint("pkg.mod executed")$ python -m pkg.modpkg initpkg.mod executed

    如上输出,pkg/__init__.py 先运行,然后模块 pkg/mod.py 的内容作为脚本执行。此时并未使用 __main__.py

命名空间中包的行为(PEP 420) 

PEP 420 允许目录缺少 __init__.py 也被视为包,此时为“命名空间包”。 -m 同样支持命名空间包:

  • 如果命名空间包中__main__.py,则可以执行它。示例:

    $ tree ns_pkgns_pkg/└── __main__.py$ cat ns_pkg/__main__.pyprint("namespace package main")$ python -m ns_pkgnamespace package main

    此时 ns_pkg 没有 __init__.py,所以没有包初始化行为,直接执行了 __main__.py

  • 如果没有 __main__.py,则 -m 会报错。由于该包没有 __init__.py,只会输出错误消息。例如:

    $ tree ns_pkg2ns_pkg2/(empty directory, no __init__.py, no __main__.py)$ python -m ns_pkg2Traceback (most recent call last):  ...ImportError: No module named ns_pkg2.__main__; 'ns_pkg2' is a package and cannot be directly executed

命名空间包没有 __file__ 属性。当 runpy 发现 spec.loader 为 None(即命名空间包),仍会尝试导入 __main__ 子模块。若找不到,就如常规包那样报错。

__init__.py 执行时机和 runpy 实现细节

  • 首次导入时运行:和正常 import 语义一样,包的 __init__.py 只在第一次导入时执行。python -m pkg 在新进程中通常首次导入,故会执行一次 __init__.py

  • 已有导入时不会重复:如果包早已通过其他方式被导入(例如在 sitecustomize 中),-m 不会再次运行 __init__.py,因为 sys.modules 已缓存该包。runpy 在 get_module_details 中会警告此类情况,指出可能导致不可预测行为。因此避免在一个进程中多次以不同方式导入同一包,以免 __init__.py 执行时机不一致。

  • 临时模块名和 sys.modulesrun_module 会将执行的包或模块临时注册为 __main__,而原名称仍保留在 sys.modules 中。执行结束后,__main__ 的内容保留在当前进程中。例如执行 python -m foo 后,foo 包会在 sys.modules 中,同时 __main__ 也存在,指向同一个模块对象(或其一个副本)。这意味着程序内部若检查 __name__,会发现是 "__main__",而非原始模块名。

  • 副作用:包初始化可能改变环境(注册入口点、修改路径等),并且这种改变会影响随后执行的模块。例如,某些应用在 __init__.py 中修改 sys.path,会影响查找 __main__.pyrunpy 实现考虑到这一点,确保导入顺序正确。

  • runpy 实际实现:CPython 源码的 Lib/runpy.py 中,函数 _get_module_details(mod_name) 通过 importlib.util.find_spec 查找模块规范。如果发现目标是包(spec.submodule_search_locations 非空),它会尝试查找 <pkg>.__main__。若 spec.loader 为 None(即命名空间包),会报错:"%r is a namespace package and cannot be executed"。因此,runpy 强制要求目标包必须有可执行的 __main__.py 文件,且不能是内置模块。

示例代码

以下使用最新 Python 3 解释器运行示例代码:

# 1. 普通模块示例:module.py$ cat module.pyprint("module executed")$ python module.pymodule executed$ python -m modulemodule executed

两种方式等效地执行了 module.py,输出相同。无任何 init.py 执行。

# 2. 包的 __main__.py 示例:mypkg 包同时含 __init__.py 和 __main__.py$ tree mypkgmypkg/├── __init__.py└── __main__.py$ cat mypkg/__init__.pyprint("init of mypkg")$ cat mypkg/__main__.pyprint("main of mypkg")$ python -m mypkginit of mypkgmain of mypkg

输出显示先运行了 __init__.py(打印 “init of mypkg”),再执行了 __main__.py(打印 “main of mypkg”)。

# 3. 包无 __main__.py 示例:mypkg2 只有 __init__.py 没有 __main__.py$ tree mypkg2mypkg2/└── __init__.py$ cat mypkg2/__init__.pyprint("init of mypkg2")$ python -m mypkg2init of mypkg2Traceback (most recent call last):  ...ImportError: No module named mypkg2.__main__; 'mypkg2' is a package and cannot be directly executed

可以看到,__init__.py 仍被执行(打印 “init of mypkg2”),随后因缺少 __main__.py 报错。

# 4. 子模块示例:pkg3 包内含子模块 mod.py,无 __main__.py$ tree pkg3pkg3/├── __init__.py└── mod.py$ cat pkg3/__init__.pyprint("init of pkg3")$ cat pkg3/mod.pyprint("pkg3.mod executed")$ python -m pkg3.modinit of pkg3pkg3.mod executed

先执行了 pkg3/__init__.py(“init of pkg3”),然后执行了子模块 pkg3/mod.py(“pkg3.mod executed”),未使用 __main__.py

# 5. 命名空间包示例:ns_pkg 包没有 __init__.py,只有 __main__.py$ mkdir ns_pkg;  # 无 __init__.py$ cat > ns_pkg/__main__.py <<EOFprint("ns_pkg main executed")EOF$ python -m ns_pkgns_pkg main executed

命名空间包的 __main__.py 被执行(打印 “ns_pkg main executed”),没有任何初始化输出,因为无 __init__.py

常见误区与注意事项

  • 误区:-m 包 不执行 __init__.py 事实相反:运行 python -m 包 时,如果包存在,解释器会先导入包本身,执行 __init__.py,然后再执行 __main__.py。上述示例(如 mypkg)验证了这一点。只有在 包中没有 __main__.py 时最终会出错,但 __init__.py 已执行。

  • 相对导入陷阱:在 -m 执行的主模块中使用相对导入会失败,因为其 __name__ 为 "__main__"。应使用绝对导入,或避免在 __main__.py 中使用相对导入,否则可能导致导入失败或导入不同模块副本。

  • 模块名称重复:如果模块或包在执行前已被以不同路径导入,可能产生两个独立的模块对象。runpy 会在这种情况下发出警告。例如,在 sys.path 中有两个同名包目录,可能加载出多个命名空间包。应确保模块名唯一或使用绝对路径。

  • 内置与扩展模块-m 不能用于原生 C 扩展模块或内置模块,因为它们没有对应的 .py 文件。只适用于纯 Python 模块或包含 __main__.py 的包。

  • sys.argv[0] 的差异:使用 -m 启动时,sys.argv[0] 被设为被执行模块的路径,而直接运行脚本时也是脚本路径。差别在于,-m 在定位过程中将当前目录加入 sys.path,这可能影响相对路径的查找。

对比表格

命令
__init__.py
 执行?
__main__.py
 使用?
说明
python module.py
— (无包)
直接执行脚本文件,等同于 -m。无包概念,不执行 __init__.py
python -m module
执行模块 module.py。无包涉及,不使用 __main__.py
python -m pkg
(有 __main__.py
首先导入包 pkg(执行 pkg/__init__.py),再执行 pkg/__main__.py
python -m pkg
(无 __main__.py
否(报错)
导入包 pkg(执行 __init__.py),因无 __main__.py 导致报错:“is a package and cannot be directly executed”。
python -m pkg.mod
导入 pkg(执行 __init__.py),然后执行 pkg/mod.py
python -m pkg.subpkg
(子包有 __main__.py
依次导入 pkgpkg/subpkg(执行各自的 __init__.py),再执行 pkg/subpkg/__main__.py
python -m pkg.subpkg
(子包无 __main__.py
否(报错)
导入 pkgpkg/subpkg(执行各自 __init__.py),因子包无 __main__.py 报错。
python -m ns_pkg
(命名空间包,有 __main__.py
无 __init__.py(命名空间包),直接执行 ns_pkg/__main__.py
python -m ns_pkg
(命名空间包,无 __main__.py
否(报错)
命名空间包无 __main__.pyrunpy 报错(无法执行命名空间包)。

参考资料

  • Python 官方文档:“命令行选项”中对 -m <module-name> 的说明。
  • Python 标准库 runpy 文档。
  • PEP 338《Executing modules as scripts》。
  • PEP 420《Implicit Namespace Packages》。
  • CPython 源码(Lib/runpy.py)实现细节。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-04 08:59:36 HTTP/2.0 GET : https://f.mffb.com.cn/a/483962.html
  2. 运行时间 : 0.141180s [ 吞吐率:7.08req/s ] 内存消耗:4,910.29kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=26daaa4bdd19a4536157d635b2393fe6
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000579s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000720s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001548s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000280s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000479s ]
  6. SELECT * FROM `set` [ RunTime:0.000221s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000479s ]
  8. SELECT * FROM `article` WHERE `id` = 483962 LIMIT 1 [ RunTime:0.001052s ]
  9. UPDATE `article` SET `lasttime` = 1775264376 WHERE `id` = 483962 [ RunTime:0.014161s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000374s ]
  11. SELECT * FROM `article` WHERE `id` < 483962 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000620s ]
  12. SELECT * FROM `article` WHERE `id` > 483962 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.007440s ]
  13. SELECT * FROM `article` WHERE `id` < 483962 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001498s ]
  14. SELECT * FROM `article` WHERE `id` < 483962 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001074s ]
  15. SELECT * FROM `article` WHERE `id` < 483962 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003947s ]
0.142890s