繁体   English   中英

无法导入python模块

[英]Unable to import python modules

我的项目结构如下:

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

__init__.py内容:

from .version import __version__ as version

__version__ = version

mod2包含一个名为classA的类。

在mod1内部,我像这样导入classA:

mod1.py:

from base.mod2 import classA

但是,我收到一条错误消息:“没有名为base的模块”。

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

编辑 :我正在从base目录中执行python脚本。 此外, basesys.path (刚刚经过验证)。

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

更新3 :如果要从包目录中的base导入子模块,可以在文件/模块mod1.py使用它(在导入中省略base部分),

from mod2 import classA

上面的解决方案还可以与run_test_1.pyrun_test_2.py脚本一起使用。 希望这可以帮助=)

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

按照与“ UPDATE 1”相同的结构,在test目录下创建一个名为run_test_1.py的脚本,其内容如下:

from base.mod2 import classA
a = classA()

另外, run_test_2.pytest目录下创建另一个名为run_test_2.py脚本,其内容如下:

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

__init__.py内容与您的相同。

from .version import __version__ as version
__version__ = version

mod1.py内容与您的相同,

from base.mod2 import classA

mod2.py内容:

class classA:
    def __init__(self):
        print("hello")

然后使用目录testpython解释器,我测试了以下内容,

>>> from base.mod2 import classA
>>> a = classA()
hello

如果您确定base目录位于sys.path则可以尝试此操作,

from base import mod2

另外,我建议您将base更改为对项目更有帮助的内容。

编辑 :我还建议您检查Python网站上的“包”文档 ,该文档还讨论了如何加载子模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM