我在代码中使用python模块/包时遇到了一些困难。代码在这里:https://github.com/cjlano/svg
.
└── svg
├── geometry.py
├── __init__.py
├── LICENSE
├── README.md
├── svg.py
├── svg.test.py
└── tests
└── [...]在模块svg中,我需要使用模块geometry。由于当所有代码都在svg.py中时,这个模块在开始时并不存在,所以我决定将整个geometry命名空间导入svg (from geometry import *)。
我的问题是,当我从包中导入svg模块时,它在python2中运行良好,但在python3中失败:
Python 2.7.5 (default, Sep 6 2013, 09:59:46)
[GCC 4.8.1 20130725 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from svg import svg
>>> help(svg)允许我访问svg模块文档。鉴于
Python 3.3.2 (default, Sep 6 2013, 09:35:59)
[GCC 4.8.1 20130725 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from svg import svg
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "./svg/svg.py", line 27, in <module>
from geometry import *
ImportError: No module named 'geometry'在导入时出现错误。
对于如何编写我的代码以便在python3中使用有什么想法吗?
谢谢!
发布于 2014-01-06 22:01:43
Python3 不再进行隐式相对导入。
这意味着您需要将geometry在svg.py中的导入变为显式的相对导入,或者更好将其更改为绝对导入:
from svg.geometry import *正如@CJlano所指出的,这还需要from __future__ import absolute_import才能在Python2上工作。
发布于 2014-01-06 21:59:06
如果在svg.py中使用相对导入,它将在python2.7和3.x中运行。
from .geometry import *注意“。”在模块名前面。
https://stackoverflow.com/questions/20959811
复制相似问题