Python 3.x 将sys.path设置为具有父模块路径不会';t导入子模块

Python 3.x 将sys.path设置为具有父模块路径不会';t导入子模块,python-3.x,python-import,Python 3.x,Python Import,该项目采用Python3: Project | Mymodule __init__.py | submodule1 __init__.py some_script.py | submodule2 __init__.py myclass.py -> implements MyCLass 每当我运行脚本时,我都从我的项目目录开始。我总是在这个项目地点执行 在Mymodule.submodule1.some_script.py中,我想在s

该项目采用Python3:

Project
|
  Mymodule
  __init__.py
  |  
   submodule1
   __init__.py
   some_script.py
  |
   submodule2
   __init__.py
   myclass.py -> implements MyCLass
每当我运行脚本时,我都从我的项目目录开始。我总是在这个项目地点执行

Mymodule.submodule1.some_script.py
中,我想在
submodule2中的
some_script.py
中导入
MyClass

some_script.py中工作的东西
我试图实现的是避免子模块中脚本文件中基于位置的相对引用。当我尝试导入模块时,它应该在当前目录中搜索,如果没有找到,则转到
sys.path

所以我的解决方案是在我的子模块1的

import os
import sys
sys.path.append(os.path.abspath('./Mymodule')) -> cwd will be "Project"
现在在我的
中有一些脚本.py
如果我导入

from submodule2.myclass import MyClass
这应该可以工作,因为我有一个指向根/父模块(Mymodule)的sys.path条目。我已经在
some_script.py

这总是抛出一个错误:

ImportError:没有名为'submodule2.myclass'的模块


为什么不考虑使用
sys.path
来搜索模块。

我能够解决这个问题。在我的sys.path中,在我当前项目路径之前的另一条路径中已经有一个类似命名的模块(submodule2)。因此python在搜索模块时遇到的第一个模块中搜索文件,该模块位于不同的位置

打印(系统路径)

\somepath:…:…:…:\myproject\u路径

\somepath->具有具有类似名称的模块(子模块2)

\myproject_path->的模块名称与子模块2相似

from submodule2.myclass import MyClass