Apache Spark 如何解决ModuleNotFoundError Python错误

yzuktlbb  于 2023-04-21  发布在  Apache
关注(0)|答案(1)|浏览(139)
exampleProject
--> models   
----> database
-------> __init__.py
-------> example1.py
-------> example1.py
--> services
----> __init__.py
----> service1.py
----> service1.py

我已经为我的项目创建了这个表结构,问题是当我在www.example.com中导入example1.py文件service1.py,我得到ModuleNotFoundError,并且在www.example.com中导入www.example.com文件时得到相同的错误service2.pyexample2.py
我已经尝试了sys.path.append方法.但仍然得到相同的错误,文件导入init.py文件.
我想在生产环境中运行这个项目,我在某个地方读到过在生产环境中使用sys.path.append方法不是一个好的做法。
这是文件夹的正常结构,但如果我想增加文件夹和文件,并从各种文件夹导入文件,我该怎么做?有人可以帮助我在这一点上,如何解决这个问题。
谢谢。

qv7cva1a

qv7cva1a1#

首先,dags文件夹被添加到sys路径中。因此,dags文件夹中的任何内容都可以导入到Airflow env中。
我将采取一个例子,你已经给了。所以让我们考虑下面的文件夹结构驻留在dags文件夹如/home/airflow/dags

exampleProject
--> models   
----> database
-------> __init__.py
-------> example1.py
--> services
----> __init__.py
----> service1.py

让我们假设exampleProject/models/database/example1.py看起来像这样

def example1_func():
    print("In example1_func")

现在,让我们在services/service1.py中导入上述函数,下面是我们将如何导入example1_func

from exampleProject.models.database.example1 import example1_func

def service1_func():
    example1_func()
    print('inside service1_func')

现在我们可以通过导入类似的方法在任务中调用service1_func

from exampleProject.services.service1 import service1_func

# creating dag
...

# calling the function in a task
service1_func()
...

相关问题