python - 导入优先级一致性?

标签 python

我对导入模块时的优先级感到困惑以及如何更改它。

当前目录包含:

l10n/__init__.py
l10n/moneyfmt.py

带有额外包的另一个目录(与当前目录不同)确实包含:

/opt/l10n/__init__.py
/opt/l10n/utils.py

现在运行 python 交互式解释器:

>>> import sys
>>> sys.path
['', '/usr/lib/python27.zip', '/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload',
'/usr/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages/PIL',
'/usr/lib/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages/setuptools-0.6c11.egg-info']
>>> import l10n.utils
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named utils    # CORRECT, NOT IN PATH YET
>>> sys.path.insert(0, '/opt')
>>> sys.path
['/opt', '', '/usr/lib/python27.zip', '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7/site-packages',
 '/usr/lib/python2.7/site-packages/PIL',
 '/usr/lib/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages/setuptools-0.6c11.egg-info']
>>> import l10n.utils
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named utils    # WHY IT CAN NOT FIND THE MODULE?

为什么我在 sys.path 中添加了搜索路径的完整路径后找不到包含 l10n.utils 模块的包?当前目录是否总是优先?可以更改吗?

最佳答案

您有两个名为 l10n 的模块。第一次尝试import l10n.utils ,错误l10n正在路上。我怀疑这是错误的l10n正在被 Python shell 缓存,并且当您尝试 import l10n.utils 时会被查询。第二次(无论您对 sys.path 进行了怎样的更改)。

尝试重新启动 Python shell,更改 sys.path作为第一件事,做 import l10n.utils马上。

关于python - 导入优先级一致性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15178264/

相关文章:

python - 实际上在云中训练谷歌云机器学习引擎 - 对该方法的澄清

python - 带有单引号字符的 csv.writer

python - 在 Python 中记录一个堆栈级别更高的模块名称/行

python - 基于 GDAL/OGR 的并行空间处理和使用 python 的空间过滤器?

python - 使用 .unstack 迭代 Pandas 数据帧/ reshape 数据帧列表

python - 为什么 multiprocessing.Lock() 不锁定 Python 中的共享资源?

python - 如何加入独立的数据框并进入pandas?

python - 如何在 MongoDB 字段中存储不同语言(非英语)的数据并检索相同的数据?

python - 如何调用与之前迭代相同的随机值?

python - pandas.dataframe.query() 中的模式搜索