如何改进我的绝对导入语句?

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

我正忙于使用 python 进行 selenium webdriver 自动化,但在简化导入语句时遇到问题。

我正在执行导入的“create_task.py”文件的路径是

'/home/test/Documents/Internal_Dev/internal_automation/project_1/Project_Tab/Project/Tasks/create_task.py'

对我来说最简单的解决方案是进行绝对导入,如下所示:

import sys
sys.path.append('/home/test/Documents/Internal_Dev/internal_automation')
from project_1.Login import login
from project_1.Project_Tab.Project.Tasks import task_web_elements
from project_1.Wait_Methods.wait_for_loading_overlay import WaitForLoadingOverlay

每当我尝试仅使用导入时

from project_1.Login import login
from project_1.Project_Tab.Project.Tasks import task_web_elements
from project_1.Wait_Methods.wait_for_loading_overlay import WaitForLoadingOverlay

我收到以下错误

'ModuleNotFoundError: No module named 'project_1'.

有没有办法简化这个,因为我不明白为什么我有必要包括

import sys
sys.path.append('/home/test/Documents/Internal_Dev/internal_automation')

当我从项目的根目录/包开始绝对导入时。

python python-import importerror
1个回答
0
投票

使用文件位置来确定根目录。您可以使用 print 来查看路径。

import os
abspath = os.path.abspath(__file__)
filename = os.sep.join(abspath.split(os.sep)[-2:])
abspath = abspath.replace(filename, "")
import sys
sys.path.append(abspath)

import os
abspath = os.path.abspath(__file__)
filename = abspath.split(os.sep)[-1]
abspath = abspath.replace(filename, "")
import sys
sys.path.append(abspath)
© www.soinside.com 2019 - 2024. All rights reserved.