无法导入python模块

无法导入python模块,python,import,module,package,Python,Import,Module,Package,我的项目结构如下: --base __init__.py mod1.py mod2.py version.py mod1.py: from base.mod2 import classA \uuuu init\uuuuu.py的内容: from .version import __version__ as version __version__ = version class classA: def __init__(self):

我的项目结构如下:

--base
    __init__.py
    mod1.py
    mod2.py
    version.py
mod1.py:

from base.mod2 import classA
\uuuu init\uuuuu.py的内容

from .version import __version__ as version

__version__ = version
class classA:
    def __init__(self):
        print("hello")
mod2包含一个名为classA的类

在mod1中,我导入classA如下:

--base
    __init__.py
    mod1.py
    mod2.py
    version.py
mod1.py:

from base.mod2 import classA
但是我得到一个错误,说“没有名为base的模块”

注意:
importmod2
works。但是,我想使用绝对路径方法,但它不起作用。谁能告诉我我做错了什么

EDIT:我正在从
base
目录执行python脚本。另外,
base
位于
sys.path
(刚刚验证)


编辑2:我想以类似的方式导入类。

更新3:如果您想从包目录中导入子模块,即
base
,您可以在/module
mod1.py
文件中使用此选项(在导入中省略
base
部分)

from mod2 import classA
上述解决方案也适用于
run\u test\u 1.py
run\u test\u 2.py
脚本。希望这有帮助()

更新2:我将通过从
test
目录执行python脚本来演示相同的方法

按照与“更新1”相同的结构,在
test
目录下创建名为
run\u test\u 1.py
的脚本,其内容如下:

from base.mod2 import classA
a = classA()
from base import mod1
mod1.classA()
还可以在
test
目录下创建另一个名为
run\u test\u 2.py
的脚本,该脚本包含以下内容:

from base.mod2 import classA
a = classA()
from base import mod1
mod1.classA()
从终端评估两个脚本,如下所示

$ cd ~/path/to/test/
$ python run_test_1.py
hello
$ python run_test_2.py
hello
正如所演示的,您应该在终端上获得“hello”的输出

更新1:我在名为
test
的目录下为您的包创建了相同的目录结构

-- test
    --base
        __init__.py
        mod1.py
        mod2.py
        version.py
\uuuu init\uuuu.py
的内容与您的内容相同

from .version import __version__ as version
__version__ = version
mod1.py的内容与您的相同

from base.mod2 import classA
mod2.py的内容

from .version import __version__ as version

__version__ = version
class classA:
    def __init__(self):
        print("hello")
然后使用目录
test
中的
python
解释器,我测试了以下内容:

>>> from base.mod2 import classA
>>> a = classA()
hello
如果您确定
base
目录位于
sys.path
中,则可以尝试此操作

从基本导入mod2

另外,我建议您将
base
更改为对您的项目更具信息性的内容


编辑:我还建议您查看Python网站上的,其中还讨论了如何加载子模块。

看看这一点非常有用。但我不想使用文件的完整路径。我想尝试在Python3中实现类似于base import.mod2的
,感谢您的回答。看来你的问题搞错了。我对问题进行了编辑以使其更清楚。@James您是否尝试从
ipython
的父目录调用它,或者甚至从另一个目录调用它,因为它已经在路径中?我没有使用
ipython
,但我是从
base
目录调用它。好的,没问题,您是否尝试过从其他目录呼叫,并再次检查
base
目录是否位于
sys.path
中。