Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
💰 Специалист по машинному обучению — востребованная и высокооплачиваемая профессия во всем мире. Если вы хотите попробовать себя в этой роли, приглашаем на первое знакомство с машинным обучением!
👉 25 января в 18:00 мск пройдет открытый урок «Первичный анализ данных с Pandas» в OTUS в рамках запуска специализации «Machine Learning».
💪 На занятии мы поговорим, как проводить первичный анализ данных в машинном обучении с использованием Python и обсудим, на что стоит ориентироваться при анализе данных, как обрабатывать признаки и как заполнять пропуски в данных.
👉 Чтобы участвовать зарегистрируйтесь https://otus.pw/3V1C7/
👉 25 января в 18:00 мск пройдет открытый урок «Первичный анализ данных с Pandas» в OTUS в рамках запуска специализации «Machine Learning».
💪 На занятии мы поговорим, как проводить первичный анализ данных в машинном обучении с использованием Python и обсудим, на что стоит ориентироваться при анализе данных, как обрабатывать признаки и как заполнять пропуски в данных.
👉 Чтобы участвовать зарегистрируйтесь https://otus.pw/3V1C7/
Понимание работы алгоритмов и умение применять их для решения прикладных задач — must-have для любого программиста или разработчика. Эта книга поможет вам не только развить навыки использования алгоритмов, но и разобраться в принципах их функционирования, в их логике и математике.
Вы начнете с введения в алгоритмы, от поиска и сортировки перейдете к линейному программированию, ранжированию страниц и графам и даже поработаете с алгоритмами машинного обучения. Теории не бывает без практики, поэтому вы займетесь прогнозами погоды, кластеризацией твитов, механизмами рекомендаций фильмов. И, наконец, освоите параллельную обработку, что даст вам возможность решать задачи, требующие большого объема вычислений.
Скидка 25% на все книги издательства Питер по промокоду
Proglib
🔗
ПодробнееPlease open Telegram to view this post
VIEW IN TELEGRAM
https://t.me/backend_megdu_skobkah/15832
через пару постов копипейст треда)
через пару постов копипейст треда)
Telegram
Stanislav Bashkyrtsev in { между скобок }
В понимании энтерпрайз/веб разработчика Dependency Injection - это фабрика, которая инициализирует объекты нашего приложения, проставляя им всем зависимости. Т.е. есть у нас какой-то Repository и Service. Сервису нужен объект Репозитория, но мы не хотим его…
Forwarded from Zen of Python
Список лучших библиотек на Python за 2022
В этот раз в подборку попало больше библиотек по ИИ и науке о данных, но всё равно в списке вы найдёте интересные ресурсы, которые стали популярны в этом году и не связаны с наукой:
https://habr.com/ru/post/707916/
#библиотека
В этот раз в подборку попало больше библиотек по ИИ и науке о данных, но всё равно в списке вы найдёте интересные ресурсы, которые стали популярны в этом году и не связаны с наукой:
https://habr.com/ru/post/707916/
#библиотека
Forwarded from Zen of Python
Вопросы и ответы к интервью для Python Developer
Годный репозиторий, в котором собраны популярные вопросы по Python и смежным темам: Django, ООП, принципы программирования, HTML, фронтенд и БД.
Сохраните, чтобы не потерять: https://github.com/yakimka/python_interview_questions
Годный репозиторий, в котором собраны популярные вопросы по Python и смежным темам: Django, ООП, принципы программирования, HTML, фронтенд и БД.
Сохраните, чтобы не потерять: https://github.com/yakimka/python_interview_questions
Forwarded from Stanislav Bashkyrtsev
Проблема питона - не скорость.. Со скоростью в большинстве сервисов можно смириться. Проблема в том что все плохо продумано, коммьюнити очень слабое - все инструменты через одно место.
- Система загрузки модулей.. Не позволяет сказать "хочу этот модуль, а тот не хочу". Все что есть в репозитории модулей (site-packages) доступно, ну и соответственно нет возможности несколько версий одной библиотеки иметь (для разных приложений). За сим имеем кучу инструментов (pyenv, venv, virtualenv, etc) которые "решают" эту проблему страшными хаками типа "а давайте для этого проекта создадим его виртуальное окружение с его копией питона, файлами которые переопределяют стандартные питон модули, и так изолируем его зависимости"
- Инструменты сборки постоянно меняются, существует несколько инструментов по скачиванию зависимостей. И представляете - опубликованную версию зависимости можно удалить из центральной репы! У меня такое было лет 10 назад с mysql драйвером. Вот это я удивился..
- Нет ничего на подобие Spring IoC + Spring MVC. Т.е. нет возможности написать веб приложение с Dependency Injection'ом. Я счас просто свой IoC сделал в проекте. Что в целом не мешает, однако он же никак с MVC не интегрируются. Вроде как FastAPI обещал сделать Dependency Injection, а на самом деле сделал вообще не его. Но при этом сказал что это DI 😵 Т.е. вы не можете описать любые singleton бины и их заинжектить - он просто дергает метод, который каждый раз создает новые объекты (и вроде все равно не каждый объект можно так создать).
- Логирование.. казалось бы что может тут пойти не так. Но пришлось 2 дня разбираться как его настроить. 99% примеров в интернетах создают свою глобальную функцию по созданию логера, чтоб его централизованно так настраивать. Это вместо того чтоб использовать файл настроек.. Дикость. Ну и соответственно ни один фреймворк/библиотека ничего норм не логируют. А потому что не понимают как..
- Библиотеки и фреймворки все как один плохо спроектированы. Возьмем нормальные платформы типа Java - есть либа для JSON (де)сериализации (например, Jackson), есть библиотека для валидации входящих данных (Bean Validation), есть для считывания свойств (Spring IoC). А в питоне? Там есть популярный Pydantic, который реализует все три штуки вместе! Как можно было придумать запихнуть три несвязанные друг с другом responsibilities в одну либу - в голову не приходит.
И ладно бы одна такая либа, но нет же.. SQLalchemy - это JOOQ и ORM в одном теле. При этом есть либа для миграции БД - и она зависит от SQLalchemy! Тут душа требует много восклицательных знаков. Ну вы представляете если бы Flyway зависил от JOOQ или Hibernate? И реально нет в питоне нормального инструмента по миграциям (я не нашел во всяком случае) - только недоделанный yoyo
- Отсутствие интерфейсов
- Нет строгого JDBC - есть только DB-API который кой-как описан. Но если хотите - можете не следовать (и есть много драйверов которые этого не делают!). Ну и соответственно нет универсальных DB Pool типа c3p0. Представляете - у постргреса в самом драйвере написан свой DB Pool 😵
Ой, я могу продолжать конечно, но надо бы и поработать 🙂
- Система загрузки модулей.. Не позволяет сказать "хочу этот модуль, а тот не хочу". Все что есть в репозитории модулей (site-packages) доступно, ну и соответственно нет возможности несколько версий одной библиотеки иметь (для разных приложений). За сим имеем кучу инструментов (pyenv, venv, virtualenv, etc) которые "решают" эту проблему страшными хаками типа "а давайте для этого проекта создадим его виртуальное окружение с его копией питона, файлами которые переопределяют стандартные питон модули, и так изолируем его зависимости"
- Инструменты сборки постоянно меняются, существует несколько инструментов по скачиванию зависимостей. И представляете - опубликованную версию зависимости можно удалить из центральной репы! У меня такое было лет 10 назад с mysql драйвером. Вот это я удивился..
- Нет ничего на подобие Spring IoC + Spring MVC. Т.е. нет возможности написать веб приложение с Dependency Injection'ом. Я счас просто свой IoC сделал в проекте. Что в целом не мешает, однако он же никак с MVC не интегрируются. Вроде как FastAPI обещал сделать Dependency Injection, а на самом деле сделал вообще не его. Но при этом сказал что это DI 😵 Т.е. вы не можете описать любые singleton бины и их заинжектить - он просто дергает метод, который каждый раз создает новые объекты (и вроде все равно не каждый объект можно так создать).
- Логирование.. казалось бы что может тут пойти не так. Но пришлось 2 дня разбираться как его настроить. 99% примеров в интернетах создают свою глобальную функцию по созданию логера, чтоб его централизованно так настраивать. Это вместо того чтоб использовать файл настроек.. Дикость. Ну и соответственно ни один фреймворк/библиотека ничего норм не логируют. А потому что не понимают как..
- Библиотеки и фреймворки все как один плохо спроектированы. Возьмем нормальные платформы типа Java - есть либа для JSON (де)сериализации (например, Jackson), есть библиотека для валидации входящих данных (Bean Validation), есть для считывания свойств (Spring IoC). А в питоне? Там есть популярный Pydantic, который реализует все три штуки вместе! Как можно было придумать запихнуть три несвязанные друг с другом responsibilities в одну либу - в голову не приходит.
И ладно бы одна такая либа, но нет же.. SQLalchemy - это JOOQ и ORM в одном теле. При этом есть либа для миграции БД - и она зависит от SQLalchemy! Тут душа требует много восклицательных знаков. Ну вы представляете если бы Flyway зависил от JOOQ или Hibernate? И реально нет в питоне нормального инструмента по миграциям (я не нашел во всяком случае) - только недоделанный yoyo
- Отсутствие интерфейсов
- Нет строгого JDBC - есть только DB-API который кой-как описан. Но если хотите - можете не следовать (и есть много драйверов которые этого не делают!). Ну и соответственно нет универсальных DB Pool типа c3p0. Представляете - у постргреса в самом драйвере написан свой DB Pool 😵
Ой, я могу продолжать конечно, но надо бы и поработать 🙂
Forwarded from Филипп
#python python... PYTHON 🔛 🚀
Проблема питона - не скорость.. Со скоростью в большинстве сервисов можно смириться. Проблема в том что все плохо продумано, коммьюнити очень слабое - все инструменты через одно место. - Система загрузки модулей.. Не позволяет сказать "хочу этот модуль, а…
Хорошо написал, согласен. Хочу уточнить про di в фастапи, что конкретно не устраивает?
Forwarded from Stanislav Bashkyrtsev
#python python... PYTHON 🔛 🚀
Хорошо написал, согласен. Хочу уточнить про di в фастапи, что конкретно не устраивает?
В понимании энтерпрайз/веб разработчика Dependency Injection - это фабрика, которая инициализирует объекты нашего приложения, проставляя им всем зависимости. Т.е. есть у нас какой-то Repository и Service. Сервису нужен объект Репозитория, но мы не хотим его создавать прям внутри Сервиса. Потому как а) для создания Репозитория нужны свои зависимости (DataSource, JdbcTemplate, etc) и б) этот же репозиторий нужен будет еще каким-то Сервисам. Поэтому мы создаем один Репозиторий на все приложение (это делает наша Фабрика), и пропихивает его всем Сервисам и кому там еще он нужен. Всё - все объекты проинициализированы и весь код готов к работе.
В FastAPI то что они называют Dependency Injection - эт совсем другое. Это просто функция, которую сам FastAPI вызовет прежде чем вызывать метод API. И вернувшееся значение будет передано уже в целевой метод API:
Т.е. это было бы аналогично такому коду:
И это они назвали Dependency Injection.. И у них есть набор пред-определенных объектов которые они сами могут таким же механизмом пробросить в метод. Например, ту же Session из SQLalchemy 🤦
В общем относительно бесполезный механизм. А DI как не было, так и нет - значит все Сервисы/Репозитории/DataSource'ы нужно инициализировать какими-то синглтонами/фабриками.
В FastAPI то что они называют Dependency Injection - эт совсем другое. Это просто функция, которую сам FastAPI вызовет прежде чем вызывать метод API. И вернувшееся значение будет передано уже в целевой метод API:
def create_dog_from_params(self, some_http_param):
return Dog.from_http(some_http_param)
@router.put(path="/dog")
def get_dog(dog=Depends(create_dog_from_params)):
dog_service.save(dog)
Т.е. это было бы аналогично такому коду:
@router.put(path="/dog")
def get_dog(some_http_param):
dog = create_dog_from_params(some_http_param)
dog_service.save(dog)
И это они назвали Dependency Injection.. И у них есть набор пред-определенных объектов которые они сами могут таким же механизмом пробросить в метод. Например, ту же Session из SQLalchemy 🤦
В общем относительно бесполезный механизм. А DI как не было, так и нет - значит все Сервисы/Репозитории/DataSource'ы нужно инициализировать какими-то синглтонами/фабриками.
Forwarded from Stanislav Bashkyrtsev
Что мы в Java привыкли иметь в плане логирования:
1. Каждый класс создает свой логер. Значит мы можем выборочно поднять/уменьшить уровень логирования.
2. Каждый логгер называется по названию класса. Значит легко найти место откуда логи идут, а оттуда уже и логику которая решила сделать что-то неверное.
3. Конфигурация происходит файлом, декларативно. Никак не в коде. Наше приложение определяет настройки логирования, не библиотека.
4. Это простой инструмент. Легко понять, легко настроить уровень логирования.
Что имеем в питоне:
1. Часто библиотеки создают один логгер на все. Соответственно если захотели поднять уровень, то прийдется включить все логи библиотеки на этом уровне.
2. Как доп недостаток - сложней найти кусок кода который решил что-то залогировать (это решаемо дебагом, но все равно дольше)
3. 99% статей и проектов которые находим в интернете используют код для настройки логирования. Это значит что все что начало логировать пока не дошли до нашей главной инициализации логов (нам нужно явно указать файл настроек) - логирует по-своему. И только когда наш код это изменил - пошли нормальные логи. Интересно, что тот же FastAPI вообще не позволяет ничего настроить по-своему - он создает свой LoggingManager и наши изменения на него никак не влияют. Это то же что сказать что в Java проекте нельзя перенастроить логирование для Томката или Spring MVC..
4. Я постоянно стреляю себе в ногу этим логгером. Вот какую-то мелочь забыл - и все, ниче не логируется или логируется неверно. Казалось бы, это же просто логгер.. Зачем-то у handler'ов (appender'ов если переводить на log4j) есть свой уровень логирования; есть child-parent отношения между логгерами и по умолчанию сообщения будут дублироваться; в конфиге логер сначала нужно объявить, а потом еще и описать (размазываем конфигурацию по двум местам); у логгера зачем-то есть обязательное *логическое* имя. В общем можно было бы это проще реализовать.
Технически с этим всем можно один раз посидеть и разобраться. Но само комьюнити этого не делает - я еще не видел ни одного проекта где логирование было бы хорошо сделано.
Еще я пока не нашел как в него пробрасывать thread-local переменные. В Java логгерах это называется MDC (Mapped Diagnostic Context). Это удобно для того чтоб, к примеру, ассоциировать логи с пользователем. В начале обработки запроса мы устанавливаем его username в MDC, а в конце - убираем. И все логируемые строки пишут username (ну или что там еще кому интересно). *Вроде* в Питоне это должно получится сделать через User-defined objects, но еще не пробовал.
---
Справедливости ради, в той же Java логирование тоже плохо сделано. Стандартным логгером никто не пользуется (хотя не понятно почему - проблемы с classloader memory leak'ом вроде бы решены, но может стигма осталась..), все используют внешние библиотеки. Но их несколько: log4j (а теперь еще и 2.x), logback, commons-logging, jboss-logging, ну и Томкат использует все-таки стандартный. Каждая библиотека использует то что ей нравится. Соответственно в любом проекте нужно настроить не только сам логгер, но еще и несколько переходников чтоб все эти вызовы к нему перенаправлялись. Это жутко все усложняет.
Но зато само комьюнити привыкло хорошо логировать - это большой плюс.
1. Каждый класс создает свой логер. Значит мы можем выборочно поднять/уменьшить уровень логирования.
2. Каждый логгер называется по названию класса. Значит легко найти место откуда логи идут, а оттуда уже и логику которая решила сделать что-то неверное.
3. Конфигурация происходит файлом, декларативно. Никак не в коде. Наше приложение определяет настройки логирования, не библиотека.
4. Это простой инструмент. Легко понять, легко настроить уровень логирования.
Что имеем в питоне:
1. Часто библиотеки создают один логгер на все. Соответственно если захотели поднять уровень, то прийдется включить все логи библиотеки на этом уровне.
2. Как доп недостаток - сложней найти кусок кода который решил что-то залогировать (это решаемо дебагом, но все равно дольше)
3. 99% статей и проектов которые находим в интернете используют код для настройки логирования. Это значит что все что начало логировать пока не дошли до нашей главной инициализации логов (нам нужно явно указать файл настроек) - логирует по-своему. И только когда наш код это изменил - пошли нормальные логи. Интересно, что тот же FastAPI вообще не позволяет ничего настроить по-своему - он создает свой LoggingManager и наши изменения на него никак не влияют. Это то же что сказать что в Java проекте нельзя перенастроить логирование для Томката или Spring MVC..
4. Я постоянно стреляю себе в ногу этим логгером. Вот какую-то мелочь забыл - и все, ниче не логируется или логируется неверно. Казалось бы, это же просто логгер.. Зачем-то у handler'ов (appender'ов если переводить на log4j) есть свой уровень логирования; есть child-parent отношения между логгерами и по умолчанию сообщения будут дублироваться; в конфиге логер сначала нужно объявить, а потом еще и описать (размазываем конфигурацию по двум местам); у логгера зачем-то есть обязательное *логическое* имя. В общем можно было бы это проще реализовать.
Технически с этим всем можно один раз посидеть и разобраться. Но само комьюнити этого не делает - я еще не видел ни одного проекта где логирование было бы хорошо сделано.
Еще я пока не нашел как в него пробрасывать thread-local переменные. В Java логгерах это называется MDC (Mapped Diagnostic Context). Это удобно для того чтоб, к примеру, ассоциировать логи с пользователем. В начале обработки запроса мы устанавливаем его username в MDC, а в конце - убираем. И все логируемые строки пишут username (ну или что там еще кому интересно). *Вроде* в Питоне это должно получится сделать через User-defined objects, но еще не пробовал.
---
Справедливости ради, в той же Java логирование тоже плохо сделано. Стандартным логгером никто не пользуется (хотя не понятно почему - проблемы с classloader memory leak'ом вроде бы решены, но может стигма осталась..), все используют внешние библиотеки. Но их несколько: log4j (а теперь еще и 2.x), logback, commons-logging, jboss-logging, ну и Томкат использует все-таки стандартный. Каждая библиотека использует то что ей нравится. Соответственно в любом проекте нужно настроить не только сам логгер, но еще и несколько переходников чтоб все эти вызовы к нему перенаправлялись. Это жутко все усложняет.
Но зато само комьюнити привыкло хорошо логировать - это большой плюс.
Forwarded from Zen of Python
Вопросы и ответы к интервью для Python Developer
Годный репозиторий, в котором собраны популярные вопросы по Python и смежным темам: Django, ООП, принципы программирования, HTML, фронтенд и БД.
Сохраните, чтобы не потерять: https://github.com/yakimka/python_interview_questions
Годный репозиторий, в котором собраны популярные вопросы по Python и смежным темам: Django, ООП, принципы программирования, HTML, фронтенд и БД.
Сохраните, чтобы не потерять: https://github.com/yakimka/python_interview_questions
This media is not supported in your browser
VIEW IN TELEGRAM
Для тех кто любит программировать на Python и не любит Javascript не могу не рассказать о таком проекте как PyScript [1], код для исполнения кода Python'а на стороне браузера. Включает как простые, так и сложные примеры [2], а также по нему есть огромное руководство с кучей подробностей [3].
Признаюсь, я лично, никогда не любил разработку фронтэнда именно из-за Javascript'а, какое-то сильное чувство отторжение у меня вызывало его использование, так что не только Javascript'у проникать на сервер, но и Python'у в браузер.
А их свежего и любопытного - руководство по написанию расширений для Google Chrome с помощью PyScript [4].
Почему это важно? Многие продукты по обработке и визуализации данных не сервере написаны на Python. Если PyScript будет работать с хорошей производительностью, то часть задач обработки можно будет перенести в браузер и поддерживать единую кодовую базу.
Пока единственное ограничение в том что PyScript более-менее оттестирован в Chrome, но даже в Firefox'е его активно не проверяли.
Тем не менее, экспериментировать можно уже сейчас.
Ссылки:
[1] https://pyscript.net
[2] https://pyscript.net/examples/
[3] https://realpython.com/pyscript-python-in-browser/#modules-missing-from-the-python-standard-library
[4] https://medium.com/@petefison/write-chrome-extensions-in-python-6c6b0e2e1573
#opensource #python #programming
Источник: https://t.me/begtin/4404
Признаюсь, я лично, никогда не любил разработку фронтэнда именно из-за Javascript'а, какое-то сильное чувство отторжение у меня вызывало его использование, так что не только Javascript'у проникать на сервер, но и Python'у в браузер.
А их свежего и любопытного - руководство по написанию расширений для Google Chrome с помощью PyScript [4].
Почему это важно? Многие продукты по обработке и визуализации данных не сервере написаны на Python. Если PyScript будет работать с хорошей производительностью, то часть задач обработки можно будет перенести в браузер и поддерживать единую кодовую базу.
Пока единственное ограничение в том что PyScript более-менее оттестирован в Chrome, но даже в Firefox'е его активно не проверяли.
Тем не менее, экспериментировать можно уже сейчас.
Ссылки:
[1] https://pyscript.net
[2] https://pyscript.net/examples/
[3] https://realpython.com/pyscript-python-in-browser/#modules-missing-from-the-python-standard-library
[4] https://medium.com/@petefison/write-chrome-extensions-in-python-6c6b0e2e1573
#opensource #python #programming
Источник: https://t.me/begtin/4404
Top Python libraries `22
by @tryolabs
link: https://tryolabs.com/blog/2022/12/26/top-python-libraries-2022
#python #tools
by @tryolabs
link: https://tryolabs.com/blog/2022/12/26/top-python-libraries-2022
#python #tools
Tryolabs
Top Python libraries of 2022
There are so many amazing Python libraries and tools out every year that it's hard to keep track of them all. That's why we share with you our hand-picked selection of our best picks.
Best Python Concurrency Guides
- https://superfastpython.com/multiprocessing-in-python/
- https://superfastpython.com/python-asyncio/
- https://superfastpython.com/multiprocessing-pool-python/
- https://superfastpython.com/threadpool-python/
They are a bit bloated and explain the same concepts 10 times, but they try to explain the most unexplored parts of Python in detail in plain language with examples.
You can just read examples and intro.
Good stuff.
- https://superfastpython.com/multiprocessing-in-python/
- https://superfastpython.com/python-asyncio/
- https://superfastpython.com/multiprocessing-pool-python/
- https://superfastpython.com/threadpool-python/
They are a bit bloated and explain the same concepts 10 times, but they try to explain the most unexplored parts of Python in detail in plain language with examples.
You can just read examples and intro.
Good stuff.
Super Fast Python
Python Multiprocessing: The Complete Guide - Super Fast Python
Python Multiprocessing, your complete guide to processes and the multiprocessing module for concurrency in Python.
Forwarded from [PYTHON:TODAY]
💾 Огромная, структурированная шпаргалка по Python
🌵 Всё, от базовых типов, словарей, списков и т.д включая копируемые примеры кода с функциями и результатом выполнения
🌵 Работа с файлами и путями
🌵 Регулярные выражения
🌵 Debugging/Отладка
🌵 Виртуальные окружения
🌵 Функции и классы и много других интересных вещей
В общим маст хэв 👍
#doc #python #cheatsheet
🌵 Всё, от базовых типов, словарей, списков и т.д включая копируемые примеры кода с функциями и результатом выполнения
🌵 Работа с файлами и путями
🌵 Регулярные выражения
🌵 Debugging/Отладка
🌵 Виртуальные окружения
🌵 Функции и классы и много других интересных вещей
В общим маст хэв 👍
#doc #python #cheatsheet
Forwarded from Блог о Data Science 💻 (Red Powerful)
Удалите Anaconda с вашего PC!
В чате Karpov Courses, где я являюсь одним из модератором часто сталкиваюсь с людьми у которых какие то проблемы с Anaconda, в основном они связаны с тем какими то библиотеками, неправильной установкой зависимостей и тп.
Как правило все эти юзеры - только только вкатываются в профессию и не умеют работать с виртуальным окружением. А в дальнейшем, когда они будут работать с прод кодом, они осознают, что постоянно переносить из одного окружения в другой - гемор, тем более в окружение анаконды. Давайте разбираться!
В каком случае удобно использовать Jupyter Notebook - Когда можно быстро накидать какой-то код или вы делаете какое то исследования, аналитику (без дальнейшего использования этого кода). Однако мы все так же должны соблюдать pep8, R&R, писать код в скриптах и использовать как можно меньше локальных переменных.
Тогда лучше сразу писать в
.py
просто потому что когда вы будете переносить с юпитера, вероятнее всего вы будете сталкиваться с багами хранения глобальных перменных. А во вторых тестирования, валидации и запуск полного пайплайна. Что реализовывать в юпитере достаточно сложно. (Если вы не работаете в Netflix или не поехавший)У вас есть глобальный Python, а теперь представьте что у вас 5 проектов, каждый из которых использует разные зависимости или версии этих зависимостей. Пока вы будете чинить один, у вас будет ломаться другой. Получается некая каша библиотек. Виртуальное окружение - некая независимая оболочка для хранения ваших зависимостей для вашего проекта. (Как правило она называется VENV от слова virtual environment). То есть теперь у вас для каждого проекта будет свое место для хранения библиотек, которые не будут путаться между собой.
Подробнее про виртуальное окружение и его активацию
Есть несколько виртуальных окружений
- venvЯ использую virtualenv + pyenv, мне кажется это наиболее удобная комбинация.
- virtualenv
- conda (не анаконда)
etc
Подробнее про виртуальные окружение и как его установить
Все просто, активируем наше окружение и пишем
> pip install jupyter notebookили
> pip install jupyterlab
Да, jupyter можно поставить отдельно и запускать его командой в bash (При активированном окружении)
> jupyter notebook
> jupyter-notebook
> jupyterlab
Если вы хотите быстро сделать какой то draft - сделайте это в google colab!
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Data Асы 🧩🖧🐉🐘🐧❄️📊
Forwarded from Data Асы 🧩🖧🐉🐘🐧❄️📊
🕰📅 Модуль pytz
Модуль pytz обслуживает функции преобразования даты и времени. Таким образом, позволяет пользователям обслуживать международную клиентскую базу.
В примере выше мы узнаем дату и время конкретного часового пояса.
С документацией пакета вы можете ознакомиться здесь.
#python
Модуль pytz обслуживает функции преобразования даты и времени. Таким образом, позволяет пользователям обслуживать международную клиентскую базу.
В примере выше мы узнаем дату и время конкретного часового пояса.
С документацией пакета вы можете ознакомиться здесь.
#python
PyPI
pytz
World timezone definitions, modern and historical