Если вы до сих пор не используете virtualenv — изолированные окружения для Python-проектов, то самое время начать это делать. Профит от этого весьма очевиден — каждое Python-приложение использует только нужные ему библиотеки (нужных версий) и требуемую версию Python. А еще это снижает риск возникновения конфликтов импорта, с которыми пришлось столкнуться мне. Подробности под катом.
Пишется тут неспешно Django-приложение. Есть в нем модель event. Простое, ничем не примечательное название модели. Кроме того, что это же имя используется добрым десятком библиотек моего системного Python. В результате имеем ситуацию, когда:
event.models.*
не срабатывает, т.к. Python просто не знает какой именно event мы хотим (смотри картинку, мой проект закрашен красненьким )
В итоге срабатывает только прямое указание:
app.event.models.*
Однако при этом на продакшн-сервере все правильно и используется virtualenv — приходится править код. И это не есть гут. Вот так и учит жизнь ударами по лбу — надо сразу делать правильно и не лениться. Урок мне на будущее.
Tags: development, django, python, virtualenv
иллюстрация что надо
…можно даже не читать