• Как установить модули python без интернета и pip?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Kostyan4ik, почему это нет возможности? С питоном всегда можно найти какую-нибудь возможность.

    Вот, к примеру, вы можете на том компе, где есть питон и интернет, скачать все необходимые пакеты с помощью того же pip:
    pip download pip
    Так вы можете скачать все необходимые пакеты и принести их на машину без инета просто на флешке.
    А там:
    python pip-20.1.1-py2.py3-none-any.whl/pip install pip-20.1.1-py2.py3-none-any.whl

    Тут происходит маленькая магия: вы с помощью питона запускаете pip прямо изнутри локально лежащего файла с его дистрибутивом. Этим pip'ом вы ставите самого себя на локальную машину. Примерно как Барон Мюнхаузен, но не больно.

    Вы также можете сохранить перечень всех установленных пакетов на компе с инетом в текстовый файл, а потом, убрав из него лишнее, скачать все эти пакеты в локальный каталог, отнести на оффлайн-комп и там ставить через тот же pip
    pip freeze > r.txt
    pip download -r r.txt
    Ответ написан
    3 комментария
  • Как оптимизировать left join запрос?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Данные из p_bikes_attrs в вашем запросе не используются, так что можете этот джойн выкинуть.
    Нифига не понятно что у вас там задумывалось, но похоже на дерево.
    Вложенный запрос выдаёт много записей, но условие джойна отсекает все, кроме одного. Это бессмысленно и неэффективно. Лучше разместить подзапрос в SELECT.
    А чтобы отфильтровать по вашему условию, как я понял различающему ситуации отсутствия определённого вида потомков и определённого соотношения минуса и плюса...
    Короче, вот. Писал наощупь, пробуйте
    WITH unfiltered AS (
      SELECT 
        distinct 
        cd1.id          AS id,
        cd1.art         AS art,
        cd1.name        AS name,
        cd1.price_in    AS price_in,
        cd1.date_in     AS date_in,
        cd1.price_plan  AS price_plan,
        cd1.c_count     AS plus,
        (
          SELECT sum(c_count)
          FROM cash_docs
          WHERE c_show=1 AND doc_type=3 AND p_id = cd1.id
        ) AS minus
        --,cd2.c_count AS minus,
        --,cd1.c_count - cd2.c_count AS remain 
      FROM cash_docs AS cd1 
      WHERE cd1.c_show=1 AND cd1.doc_type=1
      --  AND (
      --    cd1.c_count - cd2.c_count is null
      --    OR cd1.c_count - cd2.c_count > 0
      --  )
      ORDER BY name
    )
    
    SELECT *, plus - minus AS remain
    FROM unfiltered
    WHERE minus is null OR plus - minus > 0

    И форматируйте, пожалуйста, впредь запросы. Отформатированные они гораздо легче читаются и тем кто вам решит помочь не придётся тратить время еще и на форматирование.
    А-то как-то странно. Вам, значит, лень отформатировать, а нам -- помогай и копайся в этой каше...
    Ответ написан
    Комментировать
  • Почему Python выдаёт ошибку unhashable type: 'dict'?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вы пытаетесь в качестве ключа в словаре использовать нехешируемый тип (в данном случае судя по ошибке тоже словарь user_group).
    Ключем в словаре может быть только хешируемый тип, например кортеж (без вложенных нехешируемых элементов), строка, число и т.д.

    Относитесь, пожалуйста, с уважением к людям на этом ресурсе: оформляйте код тегами и полностью приводите стек-трейс ошибок.
    Ответ написан
    Комментировать
  • Как отделить рубли от копеек?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    price = input()
    r, c = (list(map(int, price.split('.'))) + [0])[:2]

    а регекспы тут действительно ни к чему. По крайней мере не для таких простых случаев они.
    Ответ написан
    5 комментариев
  • Добавление кнопкни Tkinter, при нажатии на которую, открывается другой Python файл?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Типовая структура проекта на питоне:|
    my_project_name\            # корневой каталог проекта
        .git                    # каталог с данными контроля версий
        my_project_name\        # каталог главного пакета вашего проекта
            __init__.py         # файл, который делает из этого каталога пакет. Файл можно оставить пустым
            my_script1.py       # Скрипт, который вы возможно захотите хапустить внутри вашего проекта
            my_script2.py       # Ещё один скрипт
            my_module1.py       # модуль, который вы хотите импортировать внутри проекта
            my_module2.py       # ещё модуль
            my_sub_package\     # если модуль уже хочется разбить на несколько файлов, то можно сделать пакет
                __init__.py     # этот файл делает из каталога с исходниками пакет, который позволит ммпортировать его как модуль
                my_module3.py   # это модуль внутри пакета
                my_module4.py   # ещё один
    
        my_lib1\                # это пакет, который не зависит от вашего проекта, но используется в нём и вы почему-то
                                # хотите хранить их в одном репозитории. Странное решение, но так тоже можно.
            __init__.py         # да, этот каталог стал пакетом благодаря этому файлу
            my_lib_module.py    # тут может быть ещё много модулей
    
        setup.py                # этот файл нужен, чтобы все эти пакеты (их сейчас тут два) можно было ставить через
                                # пакетный менеджер питона, например pip
        readme.txt              # ридми. Те, кто не делают ридми, рискуют немножко гореть в аду.

    Вы можете импортировать из одного модуля другие абсолютным иотносительным импортом.
    Я рекомендую, пока у вас мало лпыта, пользоватьс яотносительным и не переусложнять с этим.
    Например, чтобы в my_script1 вызвать функцию из другизх модулей и пакетов, пишите так:
    from my_project_name.my_module1 import my_function1
    from my_project_name.my_sub_package.my_module3 import my_function3
    
    from my_lib1 import my_lib_module
    from my_lib1.my_lib_module import my_lib_function1

    Вызываются и используются импортированные имена как обычно, будто они локально определены.

    Я вот сейчас подумал, что хорошо бы оформить это в виде отдельного репозитория и провести митап среди джунов нашей компании. Уверен, что многие смутно представляют себе всю эту концепцию.
    Ответ написан
    Комментировать
  • Как настроить сервер?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Привет всем! Я понимаю, что надо бы к врачу но где-то посеял полис и стесняюсь звонить в скорую, тем более врачи только таблетками и химией пичкать будут.
    У меня есть два ножика, кухонные призщепки и четыре добротных крепких табуретки.
    Хочу себе вырезать аппендицит сам.
    Недавно отнялись ноги (долго сидел на унитазе, пытался вывести черепаху), но чувствительность восстанавливается, покалывает в ступнях, но жопы не чую (если это важно...).
    Помогите, у кого есть время. Просто перечень действий/команд.
    Если времени нет - игнорьте!

    Мануалов и правда много посмотрел! Но, пузо резать больно, видимо надо ещё посидеть на точке, чтобы наркоз поднялся повыше.
    Вообще, гипс, конечно, мешает, руки плохо поворачиваются,, я читал об этом, но почему вот не сказано на этапе обработки операционного поля застрял :(
    Ответ написан
    8 комментариев
  • Как вам идея поднять электронику России с колен?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Как вам идея поднять электронику россии с колен?

    Идея выглядит свежей и неожиданной. Как никто до сих пор не догадался это (поднять с колен) сделать - ума не приложу. Идея, действительно, плавает на поверхности. Бери - не хочу!

    А если серьёзно, то, как мне кажется, в такой амбициозный проект имеет смысл ввязываться, если за плечами есть огромный опыт разработки и доведения до готового продукта своих микроконтроллеров, интегрированных чипов... Это ж логистический АД, как мне кажется с высоты своей дилетантской колокольни.

    Звучит на этом ресурсе как очень наивный вопрос. Может быть в вашем крутом портфолио этот вопрос уже не звучал бы так, но вы тут о нём ничего не сказали. Подробностей тут изложено столько, что сразу видно: проект проработан "достаточно глубоко" чтобы искать единомышленников.

    Простите меня за мой не прикрытый сарказм и местами довольно злую иронию.
    Мне просто за державу обидно, а вы тут так говорите, будто шутите.
    Ответ написан
    Комментировать
  • Что делать если не получается обратится к словарю?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Сделайте print(newchat) и сразу увидите что не так.
    Ответ написан
    3 комментария
  • Какими способами можно отображения чужую гео локацию в режиме 24 на 7?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    питнашки

    Вам нужно арендовать самую дешевую VDS, купить какой-нибудь домен, настроить на vds nginx и заиметь сертификат через letsencrypt.
    Так у вас будет 24/7 cервер с https в инете.
    Потом деплоите на сервер своё приложение на каком-нибудь flask'е. Можно подготовить шаблон проекта с помощью так называемого кукикаттера, например такого.
    На выходе у вас получится "рыба" полноценного RESTful API приложения с готовым CI/CD и почти всем, что необходимо для нормальной жизни.
    Вам останется лишь реализовать пару своих методов:
    • push_me - запостить свою позицию
    • all - взять актуальные координаты всех юнитов

    Это минимум. По-хорошему, конечно, желательно сделать это всё на asunc-io и использовать веб-сокеты для обновления координат цели.
    Ещё, исходя из специфики вашей задачи, можно задействовать RTSP.
    Ответ написан
    6 комментариев
  • В чем ошибка модуля?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Уберите не ascii-символы из токена и телефона или сконвертируйте их в utf-8 сами.
    Ответ написан
    Комментировать
  • Параметры по-умолчанию Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вычисление умолчаний происходит не в момент вызова, а в момент объявления функции. Не делайте так. Само собой у вас значение параметра по умолчанию осталост аким, каким оно было до создания файла.

    Если не будете читать документацию, а станете писать наугад не изучая толком язык, у вас такой херни еще будет вагон. Хорошо хоть вы не медик, так бы пошли аппендицит оперировать наугад
    Ответ написан
    1 комментарий
  • Как получить данным со строчки CSV-файла, а затем записать определенный текстовый результат в эту же строку?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    pandas не нужен.
    import sys 
    with open('tmp/new.csv') as fin: 
        w = csv.writer(sys.stdout) 
        for row in csv.reader(fin): 
            x = row[-1] 
            x2 = x*2 
            row.append(x2) 
            w.writerows([row])
    Ответ написан
    Комментировать
  • Почему не могу распарсить JSON?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    В чем ваша ошибка написано в сообщении о ней:
    Unexpected token p in JSON at position 0 at JSON.parse

    Там написано, что нулевой (это значит самый первый по счету) символ для парсера json оказался неожиданным. Его значение "p" - это указано тут же в этом сообщении. Теперь посмотрите что же у вас идёт первым символом в вашем, якобы, JSON'е:
    parseResults({"response":{"Header":

    Какая неожиданность! Это буква "p"!
    Вы пытаетесь распарсить то, что JSONом не является. Документ этого формата не может так начинаться.
    Ответ написан
    3 комментария
  • Контроль жидкости в баке?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    ESP-8266. Там и вайфай вам и всё что нужно для вашей задачи.
    К нему добавить модуль конвертера 485 на MAX485 (стоит рублей 30).
    В ESP добавляете код, который будет опрашивать ваши датчики по очереди и, если до какого-то не достучится, или показания будут неадекватными - поднимать тревогу.
    Ответ написан
    Комментировать
  • Как защититься от взлома по ssh ключу?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Защититься очень просто:
    1. Никому не давайте свой секретный ключ. Зашифруйте его сверху еще и паролем, если уж совсем неймётся.
    2. Используйте для разных серверов разные ключи. Если один из них будет скомпрометирован, остальные не придётся менять. Хотя что сложного в том, чтобы поменять ключи?
    Ответ написан
    Комментировать
  • Удобно ли разрабатывать GUI на Python для Windows в Linux системах?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Переходи. Никаких проблем с путями. Пути в линуксе проще, чем в винде, но если будешь использовать pathlib, который, кстати, теперь в стандартной библиотеке, то различий вообще не будет. Можно писать кроссплатформенный код.

    ИМХО, в линуксе разрабатывать проще и удобнее за счет нормальной абстракции файловой системы, за счет развитой командной строки и утилит, за счет пакетных менеджеров вроде apt и прочих, за счет нативной среды для работы с докер-контейнерами.

    ИМХО, разрабатывать нативные GUI - это прошлый век. Постепенно всё переходит в веб, есть Электрон. Делать веб-интерфейс и бэкенд с API - это куда более универсальный подход. Наверно на текущий момент, разве что, большие CAD-системы ещё имеет смысл делать нативными. И то это уже спорный вопрос.
    Ответ написан
  • Как вычислить центр круга с радиусом 40?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вы, конечно, "гениально" ставите задачу.
    Но предположим, что вы просто не подумали что может быть непонятного в вашей постановке вопроса.
    Если речь идёт о круге на плоскости в декартовых координатах, то радиуса для вычисления координат центра круга вам будет не достаточно.
    Потребуется, как минимум, либо точка на границе круга и направление (например, вектор нормали), тогда центр будет вычисляться векторной разностью координат точки и произведения нормали на радиус.
    Можно найти центр по радиусу и двум точкам на границе круга. Какие входные данные?
    Ответ написан
    Комментировать
  • Почему if text == line не срабатывает, хотя на выходе text = а, line = а?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Если у оператора `in` оба аргумента строки, то этот оператор возвращает вхождение подстроки в строку. Буква "а" есть в слове "автомобиль" и тут ничего удивительного нет. Вы очень небрежно и неаккуратно формулируете вопрос. Наверняка не понимаете как работают операторы и не знаете, что при чтении из файла в строках остаются символы абзацев.

    Приводите значение строк полностью. Вы можете не заметить абзаца, если печатаете строку. печатайте repr(text), там будет видно непечатные символы.
    И если text = а, line = а, код просто игнорит данное совпадение

    Вот это поведение скорее всего обусловлено либо непечатными символами, либо буква у вас на разных языках написана.

    Приводите код полностью. В текущем виде вы, сами того не понимая (как, гапример в случае с непечатными символами), можете не придать значения важным вещам. Вы, вон, даже кавычки ставить ленитесь.
    Ответ написан
    6 комментариев
  • Как получить все перестановки элементов массива?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    import itertools
    
    for variant in itertools.permutations([a, b, c, d]):
        print(variant)
    Ответ написан
    1 комментарий
  • Где найти файл со всеми ВРЕМЕННЫМИ альясами в linux?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Такого файла не существует. Алиасы ж, вроде бы, все в памяти процесса баша лежат в соответствующей структуре. Эта структура не персистентна и загружается в ходе чтения .bashrc, а также пополняется командой alias.
    Вы с тем же успехом можете искать файл, где лежит текст, который вы только что написали в командной строке.
    Ответ написан
    Комментировать