我正在开发一个Python应用程序,其中我有以下结构:
project/
├── src/
│ ├── main.py
│ ├── pdfs/
│ │ ├── create_pdf1.py
│ │ ├── create_pdf2.py
│ │ ├── create_pdf3.py
│ │ ├── create_pdf4.py
│ │ ├── create_pdf5.py
│ │ └── merge_pdfs.py
│ ├── entities/
│ │ ├── entitie1.py
│ ├── utils/
│ │ └── helpers.py
├── aux/
│ ├── pdf_aux1.pdf
│ └── pdf_aux2.pdf
├── out/
├── result1.pdf
└── result2.pdf
我现在正在处理 create_pdf1.py 模块并尝试从entitie1.py 模块导入一个类,但是当我运行代码时,我不断收到以下错误:
Traceback (most recent call last):
File "c:\Users\ricar\project\src\pdfs\create_pdf1.py", line 3, in <module>
from entities.entitie1 import Legajo, Persona, Domicilio, Empresa
ModuleNotFoundError: No module named 'entities'
我尝试使用
from ..entities.entitie1 import Legajo, Persona, Domicilio, Empresa
但出现此错误 ImportError: attempted relative import with no known parent package
有一件事我必须告诉我们,直到昨天我还没有像这样分发代码。所有模块都位于 src 文件夹中,我可以毫无问题地导入它们。当我重新组织所有内容并运行代码时,这个错误开始出现。
您需要在每个目录级别中使用
__init__py
(空文件)组织项目。这样,Python 模块导入就不会出现任何问题。参考:https://www.geeksforgeeks.org/what-is-__init__-py-file-in-python/
pdf-generator
├── pdf-generator
│ ├── __init__.py
│ ├── aux
│ │ ├── __init__.py
│ │ ├── pdf_aux1.pdf
│ │ └── pdf_aux2.pdf
│ ├── entitles
│ │ ├── __init__.py
│ │ └── entitie1.py
│ ├── main.py
│ ├── out
│ │ ├── __init__.py
│ │ ├── result1.pdf
│ │ └── result2.pdf
│ ├── pdfs
│ │ ├── __init__.py
│ │ ├── create_pdf1.py
│ │ ├── create_pdf2.py
│ │ ├── create_pdf3.py
│ │ ├── create_pdf4.py
│ │ ├── create_pdf5.py
│ │ └── merge_pdfs.py
│ └── utils
│ ├── __init__.py
│ └── helpers.py
└── tests
├── resources
└── test_create_pdf.py
注意:如果您使用 PyCharm 作为 IDE,请使用 New --> Python Package。这将创建一个包含
__init__.py
的目录。
然后在
create_pdf1.py
中导入entitle1
,如下所示,
from pdf_generator.entitles.entitle1 import entitle1