Gdy ktoś próbuje zaimportować moduł foo
będąc w katalogu źródłowym, otrzymuje dość mylącą wiadomość: ImportError
: ImportError: No module named foo
.Złap pytona "ImportError", jeśli import z katalogu źródłowego
Jak mogę łatwo złapać tę sprawę i zwrócić bardziej interesującą wiadomość, np. "Proszę nie ładować modułu foo z katalogu źródłowego"?
Mając __init__.py
, chciałbym zacząć:
try:
from _foo import *
except ImportError:
## check whether in the source directory...
Więc chciałbym wyróżnić różne przyczyny dla ImportError
(np ponieważ moduł nazwany foo
nie jest zainstalowany w ogóle), a wykrycie sprawy w którym setup.py
znajduje się w bieżącym katalogu. Jaki byłby elegancki sposób robienia tego?
Dzięki za szybką odpowiedź. Raczej szukam sposobu sprawdzenia, czy 'ImportError' został podniesiony przez' setup.py' znajdujący się w bieżącym katalogu i odróżnić go od innych przypadków. – Julian
Więc użyj drugiej opcji, o której wspomniałem. Wiesz, który pakiet chcesz zaimportować (w ostateczności wyodrębnić go z wiadomości 'ImportError') i możesz uzyskać nazwę bieżącego katalogu. Warunek, którego szukasz, odpowiada nazwie pakietu i katalogu, która jest taka sama, nie? – isedev