从外部目录导入模块

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

我正在开发一个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 文件夹中,我可以毫无问题地导入它们。当我重新组织所有内容并运行代码时,这个错误开始出现。

python import module
1个回答
0
投票

您需要在每个目录级别中使用

__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
的目录。

Pycharm option

然后在

create_pdf1.py
中导入
entitle1
,如下所示,

from pdf_generator.entitles.entitle1 import entitle1
© www.soinside.com 2019 - 2024. All rights reserved.