[英]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脚本。 此外, base
在sys.path
(刚刚经过验证)。
编辑2 :我想以类似的方式导入该类。
更新3 :如果要从包目录中的base
导入子模块,可以在文件/模块mod1.py
使用它(在导入中省略base
部分),
from mod2 import classA
上面的解决方案还可以与run_test_1.py
和run_test_2.py
脚本一起使用。 希望这可以帮助=)
更新2 :我将通过从test
目录执行python脚本来演示相同的方法,
按照与“ UPDATE 1”相同的结构,在test
目录下创建一个名为run_test_1.py
的脚本,其内容如下:
from base.mod2 import classA
a = classA()
另外, run_test_2.py
在test
目录下创建另一个名为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")
然后使用目录test
的python
解释器,我测试了以下内容,
>>> from base.mod2 import classA
>>> a = classA()
hello
如果您确定base
目录位于sys.path
则可以尝试此操作,
from base import mod2
另外,我建议您将base
更改为对项目更有帮助的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.