fbpx

Не хочет импортироваться модуль random в cx_Freeze

360 просмотра
0
0 Комментариев

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

P.S. python 3.2


Добавить комментарий

2 Answers

Python Опубликовано 15.06.2019
0

from random import randint
y = randint(1,3)
код = -1
print(' ----------------------------------------------------------')
print('|            Вгадай код, щоб пройти далі...                |')
print('|              (Це число від 1 до 4):                      |')
print(' ----------------------------------------------------------')
print(' ')
while код != y:
    код = int(input('    Твій варіант:'))
    if код != y:
        print('|                                                          |')
        print('|             Ні, код хибний.                              |')
        print('|                            Спробуй ще!                   |')
        print('|__________________________________________________________|')
        print('')
    else:
        print('|                                                          |')
        print('|             Вітаю, код вірний!                           |')
        print('|                                                          |')
        print('|                            ЗАХОДЬ 😉                     |')
        print('|                                                          |')
        print(' ----------------------------------------------------------')

Добавить комментарий
0

Проблемы с использованием cxfreeze и модуля random нет. По крайней мере на современных версиях:

$ cxfreeze --version  # pip install cx_Freeze -U
cxfreeze 5.1.1

[/apcode]

Чтобы убедиться, можно попробовать собрать программу, которая бросание костей реализует:

#!/usr/bin/env python3
import random
print(*[random.randint(1, 6) for _ in range(2)])  # roll the dice

[/apcode]

Пример запуска:

$ python3 .
2 5

[/apcode]

Чтобы получить: dist/roll-the-dice исполняемый файл:

$ cxfreeze --target-name=rool-the-dice __main__.py

[/apcode]

Чтобы убедиться, что системный python не используется, можно в docker контейнере запустить. Проверяем, что нет python3 команды:

$ docker run --rm ubuntu:16.04 python3 -V
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348
: starting container process caused "exec: \"python3\": executable file not found in
$PATH": unknown.

[/apcode]

Запускаем команду:

$ docker run --rm -v $PWD/dist:/work ubuntu:16.04 /work/roll-the-dice
1 2

[/apcode]

Таким образом убедились, что /dist директория всё необходимое для запуска содержит:

$ ls dist
lib roll-the-dice
$ tree dist | grep random
│   ├── _random.cpython-36m-x86_64-linux-gnu.so
$ tree -d dist
dist
└── lib
    ├── collections
    ├── email
    │   └── mime
    ├── encodings
    ├── html
    ├── http
    ├── importlib
    ├── logging
    ├── pydoc_data
    ├── unittest
    │   └── test
    │       └── testmock
    ├── urllib
    └── xml
        ├── dom
        ├── etree
        ├── parsers
        └── sax
19 directories

[/apcode]

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up