我有一个
python包我正在编写,我遇到的问题是导入标准库而不是我的文件,因为名称冲突.
例如,如下所示的文件结构:
包/ __ init__.py
# No data in this file
包/ module.py
#!/usr/bin/env python
print 'Loading module.py'
import signal
包/ signal.py
#!/usr/bin/env python
print 'Loading signal.py'
运行时我得到以下结果:
$./module.py
Loading module.py
我想得到:
$./module.py
Loading module.py
Loading signal.py
实际问题:
因此,当我运行module.py时,它的导入信号将转到stdlib版本.我怎样才能强制module.py导入signal.py呢?
如标签中所述,这需要能够在python-2.4.3上运行.虽然这是旧版本,但它包含在RHEL 5中.
一些额外的信息
只是为了获得更多信息,我明确地进行了以下设置:
[10:30pm][~/test] tree .
.
|-- package
| |-- __init__.py
| |-- module.py
| `-- signal.py
`-- script
[10:30pm][~/test] cat script
#!/usr/bin/env python
from package import signal
[10:30pm][~/test] cat package/__init__.py
[10:30pm][~/test] cat package/module.py
#!/usr/bin/env python
print "Loading module.py"
import signal
[10:30pm][~/test] cat package/signal.py
#!/usr/bin/env python
print "Loading signal.py"
[10:30pm][~/test] python ./script
Loading signal.py
[10:32pm][~/test] python ./package/module.py
Loading module.py
[10:32pm][~/test] python -m package.module
python: module package.module not found
请注意,当我运行./package/module.py时,未触发./package/signal.py中的print语句.这意味着加载的信号是stdlib中的信号.