У меня есть пакет python, который я пишу, и у меня возникла проблема, когда из-за конфликта имен импортируется стандартная библиотека вместо моих файлов.
Например, структура файла, как показано ниже:
package/__init__.py
# No data in this file
package / module.py
#!/usr/bin/env python
print 'Loading module.py'
import signal
package / signal.py
#!/usr/bin/env python
print 'Loading signal.py'
Я получаюследующие результаты, когда я запускаю это:
$ ./module.py
Loading module.py
Я хотел бы получить:
$ ./module.py
Loading module.py
Loading signal.py
Фактический вопрос:
Итак, когда я запускаю модуль.py , это import signal
идет к версии 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 , оператор print в . / Package / signal.py не был запущен.Это означает, что сигнал, который был загружен, является сигналом от stdlib.