LINUX.ORG.RU

35
Всего сообщений: 114

В скрипте несколько вызовов datetime.now() выдает одинаковое время

Хочу использовать модуль питона в логах. Урезаная версия:

from datetime import datetime

print "Datetime: %s"  %datetime.now()
print "Hello world!"
print "Datetime: %s"  %datetime.now()

Выхлоп:

Datetime: 2021-06-20 22:21:39.796000
Hello world!
Datetime: 2021-06-20 22:21:39.796000

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

 

zanac1 ()

64х битная кросскомпиляция под винду - ошибка линкера

x86_64-w64-mingw32-g++ -shared -o 4windows/_mymodule.pyd mingw/mymodule_wrap.o mingw/mymodule.o -L ~/.wine/drive_c/Python27/libs/ -lpython27 -lgomp
mingw/mymodule_wrap.o:mymodule_wrap.cxx:(.text+0x8a7d): undefined reference to `__imp_Py_InitModule4'
collect2: error: ld returned 1 exit status

ЧЯНТД? ;-(

Ставил под wine64 python2.7.18 64-х битный, версия wine-3.6 (Ubuntu 3.6-1).

$ x86_64-w64-mingw32-g++ -v
Using built-in specs.
COLLECT_GCC=x86_64-w64-mingw32-g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-w64-mingw32/7.3-win32/lto-wrapper
Target: x86_64-w64-mingw32
Configured with: ../../src/configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/include' --mandir='/usr/share/man' --infodir='/usr/share/info' --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir='/usr/lib/x86_64-linux-gnu' --libexecdir='/usr/lib/x86_64-linux-gnu' --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --enable-shared --enable-static --disable-multilib --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --libdir=/usr/lib --enable-libstdcxx-time=yes --with-tune=generic --with-headers=/usr/x86_64-w64-mingw32/include --enable-version-specific-runtime-libs --enable-fully-dynamic-string --enable-libgomp --enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-lto --with-plugin-ld --enable-threads=win32 --program-suffix=-win32 --program-prefix=x86_64-w64-mingw32- --target=x86_64-w64-mingw32 --with-as=/usr/bin/x86_64-w64-mingw32-as --with-ld=/usr/bin/x86_64-w64-mingw32-ld --enable-libatomic --enable-libstdcxx-filesystem-ts=yes
Thread model: win32
gcc version 7.3-win32 20180312 (GCC) 

32х битная сборка нормально проходит, но нужна именно 64х битная - на 32х вылезают какие то странные проблемы с выделением памяти больше гига.

Всякие варианты с подсовыванием линкеру всего что есть в Python27/libs результатов не дали;-(

 , , , ,

AntonI ()

Gentoo: миграция на Python 3.8

Группа разработчиков Gentoo Python Project напомнила, что переход на python 3.8, как на target по умолчанию, намечен на 1 декабря 2020 г. 12 января 2021 г. (ох уж эти форматы дат).

В дополнение к этому указано, что пакеты, зависящие от python2 (за исключением пакетов требующих его во время сборки), должны быть портированы на использование python3 до 1 января 2021 г., иначе они будут удалены из дерева portage.

Также к 1 января 2021 г., должнен быть завершён процесс миграции с python3.6 на python3.7 пакетов, которые его ещё не завершили. В противном случае, такие пакеты будут удалены или поддержка возможностей связанных с python будет отключена. После этого python3.6 target, возможно, будет удалён. По крайней мере, в пакете dev-python/ipython поддержка python3.6 уже удалена.

Update:
Более того, python3.9 target теперь размаскирован и стабилизирован. Точные даты пока не запланированы, но, возможно, к середине 2021 target’ом по умолчанию станет python3.9, а поддержка python3.7 будет сброшена.

Источник

 , , ,

grem ()

Gentoo: chroot и внешние Иксы. Как из самого дна послать «запусти команду»

Доброй ночи, господа.
Поскольку в генте пыхтон2_7 какбе стух, ну почти, вот вот начнёт разлагатцо...то..:-(
На 2_7 крутятся многие «полезные как БАД и ГМО» вещи, например скринлетс (да, я некрофил-свисто_без_предельщик). Про компыз пока что стращъно даже думать.

Собственно, вспышка давления желтой жидкости внутри пустой черепной полости привела меня к идее - cпихнуть скринлетс в chroot. Путем разгрёба тонн логов strace на предмет, чё_куда_почем_как, выяснилось, что цена вопроса 300 с чем то мегабайт. Ну ок. В принципе оно работает, не падает. НО!

Среди скринлетсов есть лаунчер. И тут возникает вопрос. Поскольку указанных команд для лаунчера в чруте нет (ясен пень, нафига тащить хромого, фокс и мате-терминал, ведь тогда туда весь рут прибежит O_O ), то как тогда передать в Иксы (elogind или dbus или что_угодно) или ..ммм...просто наружу «запусти_вот_эту_хрень». Причем, чтобы это было со всеми env, что есть снаружи. То есть как если бы лаунчер был не в чруте,а в текущей сессии иксов?

 , ,

KosmiK ()

python2 vs python3 range

Переписываю один очень старый скрипт для работы с текстом, заметил что python3 медленее работает с поставленной задачей, пример:

python2

string = "!.string"
print(range(len(string))
Выхлоп:
real	0m0,015s
user	0m0,006s
sys	0m0,009s

В примере на python3 я использую еще list(), так как range() в нем (py3) работает абсолютно по другому, так как это замена xrange() в python2, он не возвращает массив.

string = "!.string"
print(list(range(len(string))))
Выхлоп:
real	0m0,024s
user	0m0,021s
sys	0m0,004s

Ну и выхлоп с range без list в python3 (хотя это не правильно в моей ситуации):

real	0m0,064s
user	0m0,057s
sys	0m0,007s

Задача у меня искать по паттерну в файле строку подходящую (aka grep -r «string» file), в больших объемах соответственно цифра увеличивается таких вычислений.

Вопрос: правильно ли оборачивать range в list в python3? Либо можно использовать гораздо быстрое решение?

 , , ,

foozzi ()

Проблема с Python2 gtk в Arch

Устал биться, не могу забороть. Скрипты на втором пайтоне ругаются - «Fatal Python error: can't initialize module gtk.gtkgl»

Установленные пакеты:
Name : pygtk
Version : 2.24.0-12

Name : python2-gtkglext
Version : 1.1.0-8

OS Arch
Kernrel 4.19.115-rt48-1-rt-lts

Python 2.7.18 (default, Apr 23 2020, 22:32:06) 
[GCC 9.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gtk
>>> help(gtk)
PACKAGE CONTENTS
    _gtk
    _lazyutils
    compat
    deprecation
    gdkgl (package)
    glade
    gtkgl (package)
    keysyms
>>> import gtk.gtkgl
Fatal Python error: can't initialize module gtk.gtkgl
Aborted (core dumped)

Что смотреть, куда копать?

 , ,

pavel_l ()

Debian python-pip

Здравствуйте. Я новичок в линукс. Не могу установить python-pip (pip2, для python2.7) чреез apt: Невозможно найти пакет python-pip

Какой репозиторий нужно добавить?

ps. пытался через get_pip.py, но терминал после установки не распознает команду pip, хотя в path вроде бы добавил, но не уверен.

 , ,

GOVARD ()

Непонятно почему превышен лимит на глубину рекурсии

def sum_numbers(n):
    return n + sum_numbers(n-1)
    
print sum_numbers(3) 

 

w1rox ()

Python 2 всё

На самом деле нет, ещё три месяца. Или будет как с брекситом?

 ,

vvn_black ()

Замена узлов AST дерева и конвертация дерева в код?

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

Словарь имеет вид

table = {'A':1.2, 'B':3.14, 'X':'Y'}
подразумевается что переменная X должна быть заменена на переменную Y и т.д.

Вроде я могу при помощи модуля ast конвертнуть код в дерево и провести в нем замены. Но как мне обратно собрать код? Все что я попытался сделать с codegen, sourcecodegen пока не работает.

Код для теста

#!/usr/bin/python
import ast, sourcecodegen

table = {'A':123, 'X':'Y'}

class Repl(ast.NodeTransformer):
    def visit_Name(self, node):
        if node.id in table: return ast.parse(str(table[node.id]))

E = 'sin(X)*A'

P = ast.parse(E, 'eval')
R = Repl().visit(P)

#print astor.codegen.to_source(R)
print sourcecodegen.generate_code(R)

ЗЫ Хотелось бы что бы решение было на основе стандартных модулей, не требующих установки чего то дополнительного

 

AntonI ()

многопоточность в python скрипте: как устранить блокирование

Имеется Ubuntu 16.04.6 LTS с python-2.7.12. В питоне не эксперт, но вынужден поддерживать переданный по наследству код. Вот фрагмент:

from threading import Thread
...

class Shell(cmd.Cmd):
    ...
    def do_start(self, line):
        threads = []

        t = Thread(target=traffic(line, arg1, arg2, arg3))
        threads.append(t)
        t.start()
        t.join()
...

if __name__ == '__main__':
    global config
    global args

    args = parse_args()
    config = configparser.ConfigParser()
    config.read(args.FILE)

    s = Shell()
    ...

То есть запускает небольшой command-line shell, где набираются определенные команды и они выполняются. Это работает, но питоновский CLI блокируется когда стартует «поток».

Погуглил и подумал, что добавление t.setDaemon(True) (до t.start() или после) должно помочь. Однако должного эффекта не возымело. Также пробовал убрать t.join() — аналогично.

Что я делаю не так?

 , , ,

cruz7 ()

Как рисовать текст на картинке (не через PIL)

Нужна простая в-одном-файле графическая библиотека:

1) использующая только struct или другие базовые модули
2) работающая и в Linux, и в Windows
3) позволяющая выводить текст безо всяких шрифтов (т.е. либо встроенные матрицы букв, либо прилагающийся битмап с буквами).

Работать она должна примерно так:

import coolbitmap

img = CoolBitmap(400, 250, 'white')
img.draw_text(10, 10, 'C', 'black')
img.draw_text(20, 10, 'ool', 'blue')
img.draw_pixel(25, 15, 'red')
img.save_to('cool.bmp')
img.close()

Сраный говно-комбайн PIL, не удовлетворяющий ни одному из перечисленных пунктов, не предлагать.

 , ,

Novator ()

OpenSUSE - не устанавливается python пакет mitmproxy

% sudo pip2.7 install mitmproxy
.................................................
Installing collected packages: cryptography, Pillow, construct, pyperclip, html2text, hyperframe, hpack, h2, editorconfig, jsbeautifier, click, Flask, urwid, lxml, argh, pathtools, watchdog, brotlipy, requests, pyparsing, passlib, configargparse, tornado, typing, pyOpenSSL, blinker, mitmproxy
  Found existing installation: cryptography 2.2.1
    Uninstalling cryptography-2.2.1:
      Successfully uninstalled cryptography-2.2.1
  Running setup.py install for cryptography ... error
    ERROR: Complete output from command /usr/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-41JRoS/cryptography/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-e2OZJq/install-record.txt --single-version-externally-managed --compile:
    ERROR: running install

 ,

gigantischer ()

Отладка Python2 в prodruction.

Здравия.

Пользуюсь я тут getmail, и он иногда зависает: лог обрывается, процесс просто висит часами. Похоже на deal-lock какой-то. Как можно сделать слепок состояния всех потоков в Python2 на бегущем процессе без модификации исходника? Для Python3 есть такие прекрасные штуки как PYTHONFAULTHANDLER, -X faulthandler. К сожалению, они не доступны для Python2. А можно ли как-то увидеть состояние потоков для Python2? Питонисты, как вы отлаживаете такие ситуации?

Python2, Я.Почта (с гугловыми ящиками все норм).

 ,

urxvt ()

32-битный Питон 2 на 64-битной Ubuntu 18.04

Есть старая закрытая программа, которой требуется 32-битная libpython2.7.so.1.0 Требуется работать с ней в Ubuntu 18.04. Есть ли какое-либо руководство по установке 32-битного Питона 2 на новые 64-битные Убунту? (Большая часть найденых советов или относятся к версиям 10-12, или очень общие, типа «используй чрут» или «собери из исходников».)

Ответ: apt install install libpython2.7:i386

 ,

question4 ()

python, need more then 1 value

кусок кода:

group = open("/etc/group")

for g in group.readlines():
    gname,x,gid,users = g.split(":")
    usr1,usr2,usr3 = users.split(",")
    print gname,":",users.strip() 
    group.close()
else: 
    print "all good"

вывод:
File "./password.py", line 17, in <module>
    usr1,usr2,usr3 = users.split(",")
ValueError: need more than 1 value to unpack
что я делаю не так?

 

SavOne ()

Python 2.7 и глобальные переменные

Доброго всем времени суток.

Есть несколько питоновских файлов, в одном описано некоторое количество общих классов и определена глобальная переменная для экземпляра одного из классов, работающего в dbus, в других файлах определены более специфичные классы, но результат их работы должен тоже попадать в dbus через глобальную переменную. В 1-ом файле с общими классами глобальная переменная работает хорошо и выводит в dbus всё что мне надо, но в других файлах сделав import first_file и вызвав экземпляр first_file.global_val получаю что данная переменная равна None, как при определении в 1-ом файле, но к этому времени я уже присвоил ей значение и по отладочному выводу это проверил. Подскажите как присвоить этой переменной значение, которое будет видно во всех файлах

 ,

seijuurou ()

Открыть и настроить последовательный порт

Всем добра!

Есть некая железка с сильно порезанным линуксом. Хотелось бы сделать скрипт на питоне, работающий с последовательным портом, но модуля serial нет, как и нет возможности его установить.

Подскажите, как настроить последовательный порт (задать скорость, контроль четности, управление потоком)?

 ,

braboar ()

random в python и go

Доброго всем дня. Объясните, пожалуйста, почему рандом в питоне раз в 20 медленее гошного 'crypto/rand'?

Конкретно в питоне return open("/dev/random", "rb").read(numbytes), а в go стандартный rand.Reader. Закопался в исходники го, там непонятно вообще ничего, сплошной синтаксический сахар. Заранее спасибо.

 ,

dnb ()

Red Hat ищет питонистов

Red Hat ищет питонистов в Брно (Чехия) с релокацией. Сеньоров могут релоцировать в Испанию.

Резюме можно слать мне (abondarenko@gmail.com, me@andreybondarenko.com).

UPD: там сейчас 20(!) позиций открыто. Вилку не знаю, там слишком разный народ ищут. Наверное, от 2000 евро джуниору.

 , , , ,

Shaman007 ()