Я делаю сценарий, который получает некоторые аргументы и использую эти аргументы для управления базой данных Firebase Realtime.
Когда я запускаю скрипт на cmd (я на компьютере с Windows 10), набирая mpython myScript.py arg1 arg2...
он работает нормально. Но когда я использую cx_Freeze для сборки моего .exe, он говорит, что отсутствуют модули
Missing modules:
? Cookie imported from requests.compat
? OpenSSL.SSL imported from urllib3.contrib.pyopenssl
? OpenSSL.crypto imported from urllib3.contrib.pyopenssl
? StringIO imported from requests.compat, six, urllib3.packages.six
....
? urllib3.packages.six.moves.urllib.parse imported from
urllib3.poolmanager, urllib3.request
? urlparse imported from requests.compat
? vms_lib imported from platform
This is not necessarily a problem - the modules may not be needed on this
platform.
И это также показывает
Traceback (most recent call last):
File "C:\Users\engenharia1\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
module.run()
File "C:\Users\engenharia1\AppData\Local\Programs\Python\Python36\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
exec(code, m.__dict__)
File "Api2.py", line 8, in <module>
File "C:\Users\engenharia1\AppData\Local\Programs\Python\Python36\lib\site-packages\firebase_admin\__init__.py", line 23, in <module>
from firebase_admin import credentials
File "C:\Users\engenharia1\AppData\Local\Programs\Python\Python36\lib\site-packages\firebase_admin\credentials.py", line 20, in <module>
import google.auth
ModuleNotFoundError: No module named 'google'
Мой setup.py
import sys
from cx_Freeze import setup, Executable
setup (
name = "pyFirebase",
version = "1.1",
executables = [Executable("pyFirebase.py")]
)
Мой импорт на pyFirebase.py
(не показывает всю программу, потому что это из моей работы, я не могу, извините)
import sys
import os
import datetime
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
from random import randint
И мой способ обращения с аргами
if(len(sys.argv) == 5):
var1 = args[1]
Я сделал тест, используя только args и собрав .exe, и это сработало, поэтому, вероятно, проблема в модулях или в моей среде.
Есть идеи?
РЕДАКТИРОВАТЬ: попробуйте изменить ваш setup.py
следующим образом:
import sys
from cx_Freeze import setup, Executable
include_files = []
packages = ['google']
build_exe_options = {'include_files': include_files,
'packages': packages}
setup (
name = "pyFirebase",
version = "1.1",
options = {'build_exe': build_exe_options},
executables = [Executable("pyFirebase.py")]
)
google
использует requests
, дополнительную информацию о том, как использовать requests
с помощью cx_Freeze
в библиотеке запросов: отсутствует файл сертификатов рукопожатия SSL после cx_Freeze.
Кроме того, вам может понадобиться добавить любой необходимый файл (файл лицензии, сертификат,...?) В список include_files
.
Что касается списка Missing modules
о котором сообщает cx_Freeze
, это не обязательно является проблемой.
Я решил эту проблему, изменив версию Python на 3.7.2 и используя pyinstaller (который я пробовал раньше и тоже не работал) вместо cx_freeze.
Не знаю почему, но сейчас это работает.
import google
но все еще получаю ту же ошибку. Не обязательно проблема, но, к сожалению, в этом случае это была проблема. Ничего не работает, хотя .exe выполняется.