未找到模块,但仅在ipython3中找到

2024-05-19 10:28:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我用以下体系结构编写了一个名为biographs的包:

biographs (folder)
 >biographs (package)
  >__init__.py
  >bpdb.py
  >pmolecule.py
  >bgraph.py
  >bspace.py

__init__.py文件只有以下内容:

^{pr2}$

当我在ipython3中工作时,我想导入biographs(仅使用类Pmolecule),在ipython3(ipython6.0.0,python3.6.1)中出现以下错误:

In [1]: cd ~/biographs/
/Users/rdora/biographs

In [2]: import biographs
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-2-1803e6928e0e> in <module>()
----> 1 import biographs

/Users/rdora/biographs/biographs/__init__.py in <module>()
----> 1 from .pmolecule import Pmolecule

/Users/rdora/biographs/biographs/pmolecule.py in <module>()
      1 # class to deal with protein structures
      2 # python 2
----> 3 import bpdb
      4 import bgraph
      5 import bspace

ModuleNotFoundError: No module named 'bpdb'

但是当我使用iPython5.3.0和Python2.7.13执行完全相同的过程时,没有错误消息。在

谢谢你


Tags: inpyimportinit错误usersmodulebspace
1条回答
网友
1楼 · 发布于 2024-05-19 10:28:17

这是因为导入在Python2和Python3中是如何工作的。在你的模块pmolecule.py中,你显然做了import bpdb。在Python2中,这将在本地目录中搜索名为bpdb.py的模块并将其导入。但是在python3中,你必须对那些相对的导入明确化,也就是说,你需要这样做

from . import bpdb

为了获得Python2的一致性,您可以使用from __future__ import absolute_imports,它也在Python2下禁止这种非显式导入。在

请注意,同样适用于:

^{pr2}$

这些需要通过from . import <module-name>语法导入。在


进一步阅读

相关问题 更多 >

    热门问题