Python вносит путаницу - PullRequest
       20

Python вносит путаницу

1 голос
/ 15 января 2011

У меня странная проблема с импортом модуля. У меня есть настройка virtualenv, и один модуль доступен в {env}/lib/python2.6/site-packages/pkgname. Файл __init__.py и pkgname.py внутри.

Теперь, если я запускаю {env}/bin/python и выполняю import pkgname.pkgname, все работает просто отлично. Но если я создам скрипт в {env}/bin/pkgname.py с содержимым:

#!{env}/bin/python

import pkgname.pkgname

if __name__ == "__main__":
  pkgname.pkgname.run()

не удается снова импортировать один и тот же файл (поскольку пакет и файл имеют одно и то же имя). Как я могу отключить поиск в том же каталоге? Или как заставить импорт сначала посмотреть на глобальные пакеты?

В качестве альтернативы, каков «правильный» способ сделать это? Просто для согласованности, я бы предпочел, чтобы мой скрипт запуска был таким же, как и сам пакет, который он пытается запустить.

Ответы [ 2 ]

2 голосов
/ 15 января 2011

Назовите это pkgname. Готово. Хорошо, тогда он не запустится, если вы дважды нажмете на него в Windows, но обычно это не проблема.

0 голосов
/ 15 января 2011

Вы можете изменить sys.path.Это просто список путей для поиска, и текущая папка должна быть первой записью.Ваш файл должен работать, если вы переместите текущую папку в конец списка.Но в общем, я бы не стал делать что-то подобное без ОЧЕНЬ веской причины.Разве нельзя переименовать ваш файл name.py, runpkgname.py или что-то в этом роде?

...