如果它使用从其他文件导入的函数,我如何从 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
。
我制作了一个脚本来通过调用数据库来验证和清理复杂的 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
。