【问题标题】:Why not import Python [duplicate]为什么不导入 Python [重复]
【发布时间】:2018-11-18 12:41:00
【问题描述】:

有这个app结构,其中myapp是根目录,“app”和“package1”两个并行包:

myapp

  app
     __init__.py
     app.py

  package1
     __init__.py
     my_file.py
 
  __init__.py

*注意:最后一个__init__.py位于根目录“myapp”

现在,在 app.py 中,如果我尝试 import my_file.py

from ..package1 import my_file as my_variable

然后我得到这个错误:

ImportError: attempted relative import with no known parent package

我在这里研究并找到了一个可能的解决方案:

How to resolve ImportError: attempted relative import with no known parent package

我想应用“解决方案 1”,但不明白我应该将 ma​​in.py 放在 哪里 以及它的 应该放在哪里>内部代码,或者相反,它可能是一个空文件,例如__init__.py

【问题讨论】:

    标签: python import relative-path


    【解决方案1】:

    app.py 中应该有一个run 函数:

    def run():
        # .... You code that should run as app
    

    app.py中应该没有自动运行代码

    main.py 应与myapp 位于同一文件夹中:

    myapp
      app
         __init__.py
         app.py
    
      package1
         __init__.py
         my_file.py
    
      __init__.py
    main.py
    

    现在main.py 应该包含如下内容:

    from myapp.app import app
    
    app.run()
    

    你可以运行它python main.py

    您也可以将__main__.py 文件放在myapp 中:

    myapp
      app
         __init__.py
         app.py
    
      package1
         __init__.py
         my_file.py
    
      __init__.py
      __main__.py
    

    __main__.py 应该包含如下内容:

    from .app import app
    
    app.run()
    

    你不能像这样运行它python -m myapp

    【讨论】:

      猜你喜欢
      • 2017-10-06
      • 1970-01-01
      • 2021-09-26
      • 2012-03-07
      • 1970-01-01
      • 2018-04-18
      • 2021-12-20
      • 2015-08-16
      相关资源
      最近更新 更多