从父目录中另一个文件夹中的模块导入函数
Import a function from a module in another folder in parent directory
几个小时以来,我一直试图解决这个问题,但没有成功。
这是我的文件夹结构。
/parent_folder
main.py
module1/
script1.py
module2/
script2.py
script2.py
里面只有这个:
def subtract_numbers(x, y):
return x - y
我希望script1.py能够调用这个函数。
我有:
from ..module2.script2 import subtract_numbers
result_subtraction = subtract_numbers(5, 5)
print(result_subtraction)
我得到ImportError: attempted relative import with no known parent package
我在 scrip1.py
的导入行中尝试了许多不同的排列,但我得到了同样的错误。我还必须注意,我在两个文件夹中有 __init__.py
个文件。
我该如何调用 script2.py
中的函数?
相对导入不能返回到比发起 python
调用的级别更高的级别。因此,您的问题是您直接从 module1
目录调用 script1.py
。我猜是这样的:
user:/path/to/parent/module1$ python script1.py
因此您需要从可以实际看到 script2.py
.
的级别拨打 script1.py
首先,将 script1.py
中的相对导入更改为绝对导入:
from module2.script2 import subtract_numbers
然后,移回 module1
的父目录 和 运行 模块作为脚本从那里(注意提示中的位置) :
user:/path/to/parent$ python -m module1.script1
这对我有用。
我把父目录(/parent_folder
)的目录导出到PYTHONPATH
.
export PYTHONPATH=$PYTHONPATH:/home/username/Desktop/parent_folder
然后,在文件 module1/script1.py
中,我更改了这一行:
from module2.script2 import subtract_numbers
现在我可以使用 python script1.py
调用脚本 script1.py
,它调用在 module2/script2.py
中声明的函数,它会起作用。
我还必须注意,我到处都有 __init__.py
个文件(在父目录和两个子文件夹中),但我现在确定这是否重要。
几个小时以来,我一直试图解决这个问题,但没有成功。 这是我的文件夹结构。
/parent_folder
main.py
module1/
script1.py
module2/
script2.py
script2.py
里面只有这个:
def subtract_numbers(x, y):
return x - y
我希望script1.py能够调用这个函数。 我有:
from ..module2.script2 import subtract_numbers
result_subtraction = subtract_numbers(5, 5)
print(result_subtraction)
我得到ImportError: attempted relative import with no known parent package
我在 scrip1.py
的导入行中尝试了许多不同的排列,但我得到了同样的错误。我还必须注意,我在两个文件夹中有 __init__.py
个文件。
我该如何调用 script2.py
中的函数?
相对导入不能返回到比发起 python
调用的级别更高的级别。因此,您的问题是您直接从 module1
目录调用 script1.py
。我猜是这样的:
user:/path/to/parent/module1$ python script1.py
因此您需要从可以实际看到 script2.py
.
script1.py
首先,将 script1.py
中的相对导入更改为绝对导入:
from module2.script2 import subtract_numbers
然后,移回 module1
的父目录 和 运行 模块作为脚本从那里(注意提示中的位置) :
user:/path/to/parent$ python -m module1.script1
这对我有用。
我把父目录(/parent_folder
)的目录导出到PYTHONPATH
.
export PYTHONPATH=$PYTHONPATH:/home/username/Desktop/parent_folder
然后,在文件 module1/script1.py
中,我更改了这一行:
from module2.script2 import subtract_numbers
现在我可以使用 python script1.py
调用脚本 script1.py
,它调用在 module2/script2.py
中声明的函数,它会起作用。
我还必须注意,我到处都有 __init__.py
个文件(在父目录和两个子文件夹中),但我现在确定这是否重要。