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