我用以下体系结构编写了一个名为biographs
的包:
biographs (folder)
>biographs (package)
>__init__.py
>bpdb.py
>pmolecule.py
>bgraph.py
>bspace.py
__init__.py
文件只有以下内容:
当我在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执行完全相同的过程时,没有错误消息。在
谢谢你
这是因为导入在Python2和Python3中是如何工作的。在你的模块
pmolecule.py
中,你显然做了import bpdb
。在Python2中,这将在本地目录中搜索名为bpdb.py
的模块并将其导入。但是在python3中,你必须对那些相对的导入明确化,也就是说,你需要这样做为了获得Python2的一致性,您可以使用
from __future__ import absolute_imports
,它也在Python2下禁止这种非显式导入。在请注意,同样适用于:
^{pr2}$这些需要通过
from . import <module-name>
语法导入。在进一步阅读
相关问题 更多 >
编程相关推荐