Python从更高级别的包中导入模块

Python从更高级别的包中导入模块,第1张

Python从更高级别的包中导入模块

如果您

app/server.py
以脚本运行
app
则不会将的父目录添加到中
sys.path()
。该
app
目录本身,而不是被添加(而不是作为一个包,但作为进口搜索路径)。

您有4个选择:

  1. 移动
    server.py
    所述的
    app
    包(它旁边)
  2. app
    在仅运行的旁边添加一个新的脚本文件:

    from app import server

    server.main()

  3. 使用

    -m
    switch选项将 模块 作为主要入口点运行:

    python -m app.server
  4. 将的父目录添加

    server.py
    sys.path

    import os.path

    import sys

    parent = os.path.dirname(os.path.dirname(os.path.abspath(file)))
    sys.path.insert(0, parent)

但是,这最后一个选项可能会带来更多问题。现在两个

app
包和包含在模块
app
封装上
sys.path
。您可以同时导入
app.server
server
,Python将把它们视为两个独立的模块,每个模块在中都有自己的条目
sys.modules
,并具有各自的全局变量的单独副本。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5644305.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存