【问题标题】:ImportError: No module named 'version'ImportError:没有名为“版本”的模块
【发布时间】:2015-09-06 12:54:20
【问题描述】:

我点了“opencc”

当我对下面的代码进行外壳处理时

import opencc

它显示

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import opencc
File "C:\Python34\lib\site-packages\opencc\__init__.py", line 6, in <module>
from version import __version__ 
ImportError: No module named 'version'

但是“____init__.py”和“version.py”在同一个目录下 C:\Python34\lib\site-packages\opencc

opencc
    |----__init__.py
    |----version.py

文件:版本.py

__version__ = '0.1'

当我改变时

from version import __version__

进入

__version__ = '0.1'

opencc,它的工作原理

我知道这并没有什么大的区别,但我只是想知道为什么init.py不能在同一个目录中导入模块version.py,

【问题讨论】:

    标签: python


    【解决方案1】:

    opencc 模块与 Python 3 不兼容。目前只能在 Python 2 上使用。

    具体来说,version 模块是 opencc 包的一部分,但在 Python 3 中,您需要使用绝对导入,from opencc.version import __version__from .version import __version__。代码也会有其他问题。

    【讨论】:

    • 谢谢。这意味着__init__.py导入模块就像sys.path一样,但不能导入当前路径中的模块?当我打开 init.py 并运行它时,导入可以工作
    • @f.BigBro:这意味着在 Python 2 中导入是从查看当前包开始的,这意味着很容易无意中屏蔽全局安装的库。如果您假装 opencc 包内容是全局安装的模块(通过将其添加到 sys.path 或直接运行 __init__.py 那么是的,它会工作,但这并不意味着库将正常工作。整个项目必须移植到 Python 3,除非您有进行此类移植的经验,否则我不会尝试自己进行。
    • 我在解决问题时忘记发表评论。实际上。因为我将文件名保存为“opencc.py”,所以它发生了,更改了名称,它可以工作
    【解决方案2】:

    添加包,或将其复制到cp -R Version /usr/local/lib/python3.9 它对我有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 2012-12-07
      • 2012-05-23
      • 2019-07-29
      • 2015-07-04
      • 2014-03-15
      • 2017-12-29
      相关资源
      最近更新 更多