【问题标题】:Correct to import module class python正确导入模块类python
【发布时间】:2020-01-10 11:18:09
【问题描述】:

Python项目结构:

src/
  - package-name/
     -- A/
         ---B/
               b1.py
         ---C/
               c1.py

c1.py 中,它使用b1.py 中定义的函数。我尝试了两种方法:

方法一:from src.package-name.A.B.b1 import b1_func 方法二:from ..B.b1 import b1_func

导入模块从package-name目录开始,所以src/在导入的模块中将不可见。所以导入我自己的模块时 Method1 不起作用。

Method2 在 IDE 中运行时不起作用。 ValueError: attempted relative import beyond top-level package

有什么建议吗?谢谢。

【问题讨论】:

    标签: python class import module


    【解决方案1】:

    您在 A 和 B 中有 __init__.py 文件吗?将 b1_func 正确导入 B 和 A 的 init 文件可能是值得的。

    __init__.py

    from .b1_file import b1_func
    

    什么的

    和一个__init__.py

    from B import b1_func
    

    那你应该可以import ..b1_func

    【讨论】:

      【解决方案2】:

      我将“Content Root”更改为 PyCharm 和 import package-name.B.b1 中的包名目录。它有效。

      【讨论】:

        【解决方案3】:

        按照这些步骤将包导入到任何你想要的地方

        1. 首先,在所有文件夹中添加__init__.py

        __init__.py in src__init__.py in package__init__.py in A__init__.py in B__init__.py in C

        1. 如果您想在c1.py 中导入来自b1.py 的函数,请将这些行添加到c1.py 文件中。
        
        import sys
        sys.path.append(“../”)
        
        #if u want from src folder add ../../
        
        from B.b1 import YourFunctionName
        
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-23
          • 2013-05-29
          • 2021-02-04
          • 1970-01-01
          • 1970-01-01
          • 2021-03-13
          • 1970-01-01
          • 2018-08-10
          相关资源
          最近更新 更多