fra*_*ous 6 python import python-2.7 python-3.x
我将导入问题简化为这个简单的基本情况.说我有一个Python包:
mypkg/
__init__.py
a.py
b.py
Run Code Online (Sandbox Code Playgroud)
a.py包含:
def echo(msg):
return msg
Run Code Online (Sandbox Code Playgroud)
b.py包含:
from mypkg import a # possibility 1, doesn't work
#import a # possibility 2, works
#from mypkg.a import echo # import also fails
print(a.echo())
Run Code Online (Sandbox Code Playgroud)
在Python 2.7.6和Python 3.3.5上运行python b.py
生成ImportError: No module named mypkg
.我也尝试过添加from __future__ import absolute_import
两种情况,同样的问题.
我希望可能性1工作得很好.
可能性2不太理想.假设标准库可以引入一个名为的包a
(在这种情况下不太可能,但你明白了).虽然Python 2首先搜索当前包,但Python 3+包含绝对导入更改,因此首先检查标准库.不管我的理由是什么,可能性1应该起作用,不是吗?我可以发誓我以前做过几千次.
注意:如果您编写外部脚本mypkg
,from mypkg import a
则无问题.
我的问题类似于python - 同一目录中模块的绝对导入,但作者暗示我所拥有的应该是有效的.
jfs*_*jfs 12
from mypkg import a
是正确的形式.不要从Python包目录中运行脚本,它使用可能导致错误的多个名称使相同的模块可用.python -m mypkg.b
从包含的目录运行mypkg
.
为了能够从任何目录运行,mypkg
应该在pythonpath中.
归档时间: |
|
查看次数: |
5924 次 |
最近记录: |