Почему не работает numexpr

Boulmane

Новичок
Пользователь
Дек 4, 2022
1
0
1
В чём проблема ?
Я начинающий программист по питону.
Недавно начал изучать библиотеки .Недавно написал калькулятор использованием numexpr .
Написал вот такой код:
import numexpr

expr = input('ввод:')
result = numexpr.evaluate(expr)

print(f"Результат:{result}")

input()
При использовании выдаёт кучу ошибок :
Traceback (most recent call last):
File "C:\Users\romag\venv\lib\site-packages\numpy\__init__.py", line 151, in <module>
from . import random
File "C:\Users\romag\venv\lib\site-packages\numpy\random\__init__.py", line 180, in <module>
from . import _pickle
File "C:\Users\romag\venv\lib\site-packages\numpy\random\_pickle.py", line 1, in <module>
from .mtrand import RandomState
File "mtrand.pyx", line 1, in init numpy.random.mtrand
File "bit_generator.pyx", line 38, in init numpy.random.bit_generator
File "C:\Users\romag\AppData\Local\Programs\Python\Python310\lib\secrets.py", line 19, in <module>
from random import SystemRandom
File "C:\Users\romag\OneDrive\Рабочий стол\pythonProject1\random.py", line 2, in <module>
random_number = (random.randint(1,5))
AttributeError: partially initialized module 'random' has no attribute 'randint' (most likely due to a circular import)
Traceback (most recent call last):
File "C:\Users\romag\OneDrive\Рабочий стол\Мои творения\venv\my work.py", line 2, in <module>
import numexpr
File "C:\Users\romag\venv\lib\site-packages\numexpr\__init__.py", line 24, in <module>
from numexpr.interpreter import MAX_THREADS, use_vml, __BLOCK_SIZE1__
ImportError: numpy.core.multiarray failed to import
Писал по ролику с ютуба с канала Хауди хо. Версия модуля 2.8.1
Помогите пожалуйста
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
372
107
43
ImportError: numpy.core.multiarray failed to import
похоже что ошибка импорта нужных ему библиотек для работы. Но если нужно считать простые математические выражения, то встроенная функция eval() может помочь.
eval('6+8') 14
 
  • Мне нравится
Реакции: Malenkey

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 581
457
83
ида - это просто инструмент для реверсинга, не самый лучший, на мой взгляд...


Как такое возможно?
ну на практике я такого не встречал конечно, адекватные люди в коммерческих проектах eval не используют...

в теории, главная цель - повысить права
если ваш eval берет функции из сторонних источников - подмена длл (со - если юникс), подмена ваших модулей, скриптов...
если eval принимает какой-то ввод от пользователя, вообще рай, можно напрямую дать команду...
если eval только внутри программы, то зачем он там нужен не понятно
вообще, зачем eval - не понятно (единственное объяснение - это дать возможность проникновения)

в любом случае, eval - это потенциальная уязвимость, и за использование нужно по рукам бить...
 
Последнее редактирование:
  • Мне нравится
Реакции: Malenkey

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
pip install numexpr в cmd выполнял? У меня все работает без ошибок.
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
похоже что ошибка импорта нужных ему библиотек для работы. Но если нужно считать простые математические выражения, то встроенная функция eval() может помочь.
eval('6+8') 14
Только непонятно, а зачем нужен метод "eval()", если интерпретатор и так производит вычисления?
Python:
expr = (6+4)*2
print(expr)
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
372
107
43
Только непонятно, а зачем нужен метод "eval()", если интерпретатор и так производит вычисления?
Тут имеется ввиду производить вычисления через входную строку, т.е. через input()
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Тут имеется ввиду производить вычисления через входную строку, т.е. через input()
Ясно
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 581
457
83
похоже что ошибка импорта нужных ему библиотек для работы. Но если нужно считать простые математические выражения, то встроенная функция eval() может помочь.
eval('6+8') 14
не стоит использовать eval, он же выполняет все что вы дадите, это не безопасно...
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 581
457
83
Недавно начал изучать библиотеки .Недавно написал калькулятор использованием numexpr .
Написал вот такой код:
import numexpr

expr = input('ввод:')
result = numexpr.evaluate(expr)

print(f"Результат:{result}")

input()
это весь калькулятор? а что тут изучать?
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
не стоит использовать eval, он же выполняет все что вы дадите, это не безопасно...
А чем небезопасно? :eek: Приведите, пожалуйста, пример! Что он может сделать криминального? Забить всю RAM?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 581
457
83
А чем небезопасно? :eek: Приведите, пожалуйста, пример! Что он может сделать криминального? Забить всю RAM?
eval("__import__('os').remove('file')") - удалит указанный файл
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
eval("__import__('os').remove('file')") - удалит указанный файл
И это самое страшное? А "RStudio" что уже не восстановит файл? ;)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 581
457
83
И это самое страшное? А "RStudio" что уже не восстановит файл? ;)
это пример...
вы можете попасть в ботнет, пересылать данные кому то, а потом придут к вам, потому что вы отсылали, вариантов куча...
вообще это глупо обсуждать, вы даете возможность посторонним людям выполнять код на вашем оборудовании...
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
вы даете возможность посторонним людям выполнять код на вашем оборудовании.
Как такое возможно? :oops: Перехват прерывания дизассемблером? Идой?
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
ида - это просто инструмент для реверсинга, не самый лучший, на мой взгляд...



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

в теории, главная цель - повысить права
если ваш eval берет функции из сторонних источников - подмена длл (со - если юникс), подмена ваших модулей, скриптов...
если eval принимает какой-то ввод от пользователя, вообще рай, можно напрямую дать команду...
если eval только внутри программы, то зачем он там нужен не понятно
вообще, зачем eval - не понятно (единственное объяснение - это дать возможность проникновения)

в любом случае, eval - это потенциальная уязвимость, и за использование нужно по рукам бить...
Ясно! Спасибо за ответ!
 

Форум IT Специалистов