Cx_Freeze и youtube_dl отсутствуют модули Windows
Я использую Cx_Freeze для создания исполняемого файла из скрипта Python (только один файл: mp3InThePocket.py) на Windows 10. Все работало, когда я попробовал это на Ubuntu. При использовании Windows возникло много проблем. Мне удалось решить их множество, но я сталкиваюсь с последним: кажется, что при сборке с Cx_Freeze отсутствуют модули. Мой setup.py:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Python 3
import sys, os
from cx_Freeze import setup, Executable
includes = ["youtube_dl", "urllib", "os", "sys", "time", "re"]
excludes = []
packages = []
path = []
exe = Executable(
script="mp3InThePocket.py",
icon="./icone.ico",
)
setup(
name="mp3InThePocket",
version="1.00",
description="",
author="LDV",
options = {"build_exe": {"includes": includes,
"excludes": excludes,
"packages": packages,
"path": path
}
},
executables=[exe]
)
Вот что я получаю при сборке:
Missing modules:
? BaseHTTPServer imported from youtube_dl.compat
? Cookie imported from youtube_dl.compat
? Crypto.Cipher imported from youtube_dl.downloader.hls
? HTMLParser imported from youtube_dl.compat
? __main__ imported from bdb, pdb
? _dummy_threading imported from dummy_threading
? _frozen_importlib imported from importlib, importlib.abc
? _frozen_importlib_external imported from importlib, importlib._bootstrap,
importlib.abc ? _posixsubprocess imported from subprocess
? _scproxy imported from urllib.request
? ce imported from os
? cookielib imported from youtube_dl.compat
? fcntl imported from pty, youtube_dl.utils
? future_builtins imported from youtube_dl.compat
? grp imported from shutil, tarfile
? htmlentitydefs imported from youtube_dl.compat
? httplib imported from youtube_dl.compat
? java.lang imported from platform
? netbios imported from uuid
? org.python.core imported from copy
....
This is not necessarily a problem - the modules may not be needed on this platform.
Странно то, что исполняемый файл работает нормально при запуске из консоли, а не при нажатии на него. (ошибка возникает с youtube_dl, из-за, я думаю, этих отсутствующих зависимостей)
Сама программа работает нормально при запуске самостоятельно (до сборки с помощью cx_freeze) с Python.
Еще одна вещь, которую нужно знать, это то, что мне нужно было указать переменную PATH для ffmpeg (которую я скачал отдельно) в переменных env Windows, чтобы youtube_dl работал с оригинальным скриптом python.
Я установил Cx Freeze из исходного каталога (клонирование из github и установка)
Спасибо за помощь!