假设我有以下文件
tata/foo.py
tata/yoyo.py
foo/__init__.py
foo/bar.py
在档案foo.py
我做
import foo.bar
我运行PYTHONPATH=. python tata/yoyo.py
我得
Traceback (most recent call last):
File "tata/yoyo.py", line 1, in <module>
import foo.bar
ImportError: No module named bar
删除tata/foo.py
时问题消失。当我有全局模块名称和本地文件名重合时,你能否建议一种解决我的情况的方法。
答案 0 :(得分:1)
使用:
AverageTimeForFirstReferral
答案 1 :(得分:1)
这是一个例子:
文件:
test
|
import_test
├── foo
│ ├── bar.py
│ ├── bar.pyc
│ ├── __init__.py
│ └── __init__.pyc
├── __init__.py
├── __init__.pyc
└── tata
├── foo.py
├── foo.pyc
├── __init__.py
├── __init__.pyc
└── yoyo.py
yoyo.py:
#!/usr/bin/env python
# encoding: utf-8
from __future__ import absolute_import
from ..foo import bar
print 'cool'
测试命令:
cd test
python -m import_test.tata.yoyo
输出:
cool
答案 2 :(得分:0)
这似乎是PEP 328
中描述的经典问题本地模块或程序包可以直接影响另一个挂在sys.path
之外的模块
处理它:
-m
选项)执行。使用具有所谓&#34;绝对导入行为的Python 3&#34;或者添加
from __future__ import absolute_import