我正忙于使用 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')
当我从项目的根目录/包开始绝对导入时。
使用文件位置来确定根目录。您可以使用 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)