如果它使用从其他文件导入的函数,我如何从 Unix 上的可执行 python 文件制作我的脚本 运行? (ModuleNotFoundError)

How can I make my script run from executable python file on Unix if it uses functions imported from other files? (ModuleNotFoundError)

我制作了一个脚本来通过调用数据库来验证和清理复杂的 DataFrame。我将脚本分成模块。我经常在文件之间导入它们,以使用分布在不同文件和目录中的某些函数和变量。

请查看图片以了解文件是如何跨目录分布的:

目录结构

示例如下所示:

# Module to clean addresses: address_cleaner.py
def address_cleaner(dataframe):
...
return dataframe

# Pipeline to run all cleaning functions in order looks like: pipeline.py
from file1 import function1
...
def pipeline():
df = function1
...function2(df)
...function3(df)
...
return None

# Executable file where I request environment variables and run pipeline: exe.py
from pipeline import pipeline
import os
... 
pipeline()
...

当我在 Unix 上 运行 时:

% cd myproject
% python executable.py

这是导入案例之一,我导入它是为了避免对环境变量字符串名称进行硬编码:

File "path/to/executable.py", line 1, in <module>
from environment_constants import SSH_USERNAME, SSH_PASSWORD, PROD_USERNAME, PROD_PASSWORD
ModuleNotFoundError: No module named 'environment_constants

当我在 Unix 上 运行 executable.py 时,我得到一个 ModuleNotFoundError,它调用上面显示的管道,似乎我在文件之间所做的所有导入都使用函数、变量或他们保持不变,尤其是不同目录中的那些人无法相互联系。这些目录都属于同一个父目录“CD-cleaner”。

有没有办法让这些文件相互读取,即使它们位于脚本的不同文件夹中?

提前致谢。

创建适当的 python 模块,您可以使用 pip 安装和管理这些模块,或者(更简单)始终使用根目录作为工作目录。相应地设置导入路径,然后当您位于 joor-cd-cleaner 目录时,只需 运行 根文件夹中的文件,例如 python generate/generate_dataframe.py