如何从包中的另一个文件夹导入文件

问题描述 投票:0回答:1

我的项目结构是这样的

pythonProject
|
|-__init__.py
|
|- a 
|  |- file_a.py 
|  |-__init__.py
|
|- b 
   |- file_b.py 
   |-__init__.py

我还在下面附上了我的项目结构的图片。

enter image description here

我的

file_a.py
看起来像:

class class_a:
    def __init__(self):
        pass
    def show(self):
        print('class A')

if __name__ == "__main__":
    pass

我的

file_b.py
看起来像:

from pythonProject.a.file_a import class_a

class class_b:
    def __init__(self):
        pass

    def show(self):
        a = class_a()
        a.show()

if __name__ == "__main__":
    b = class_b()

但我一直收到错误消息

 No module named 'pythonProject'
。所有文件夹都有
__init__.py
文件。我做错了什么?

在终端上,我从 pythonProject 中运行命令

python b/file_b.py

此外,我不想使用 sys 库添加项目路径。

谢谢。

我试过的东西。

  1. 我在所有文件夹中添加了所有
    __init__.py
    文件。但是它们都是空的。他们应该有任何具体的参考资料吗?
  2. 我试过导入线到
    ..a.file_a import class_a
    。然后我得到错误:
    ImportError: attempted relative import with no known parent package
  3. 我尝试将导入行添加到
    a.file_a import class_a
    ,但错误是
    ModuleNotFoundError: No module named 'a'
python python-3.x python-import python-module python-packaging
1个回答
1
投票

我认为问题似乎出在文件

if __name__ == "main"
a.py
中的
b.py
条件。而不是
"main",
正确的字符串是
"__main__"
(每边双下划线)

将两个文件中的条件更改为

if __name__ == "__main__":
并尝试再次运行文件
b.py
。这应该可以解决错误

没有名为“pythonProject”的模块。

在导入方面,您可以使用文件中的绝对导入语法

a.py
从文件
b.py

导入类a

from pythonProject.a.file_a import class_a

只要您从

b.py
目录中运行文件
pythonProject
,这应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.