我使用YouTube的API构建了一个python程序来检测某些频道的变化。
以下是我组织程序的方式:
Project/
classes/
Database.py
database/
project.db
main.py
我的main.py程序第一次联系YouTube API,使用我的数据库类实例将一些信息存储到.db文件中。
然后它会按特定时间间隔与YouTube API联系,并检查.db文件中的内容与服务器响应之间的差异。
我正在尝试将我的项目导出到.exe中以与同事共享,但cx_Freeze对我来说无效。
我的 main.py :
# IMPORT
import sys
sys.path.insert(0, 'classes/')
from Database import Database
import urllib.request
import json
import re
我的 Database.py :
import sys
sys.path.insert(0, '../database/')
import sqlite3
我的 setup.py :
from cx_Freeze import setup, Executable
import sys
import os
build_exe_options = {"packages": ['sys', 'urllib.request', 'json', 're'], "excludes": ["tkinter"], "include_files": ['database/project.db']}
setup(name = 'Project',
version = '0.1',
options = {"build_exe": build_exe_options},
executables = [Executable("main.py")])
打字:
python3 setup.py build
结果的有趣部分:
running build
running build_exe
...
Missing modules:
? __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
? _winapi imported from subprocess
? _winreg imported from platform
? java.lang imported from platform
? msvcrt imported from getpass, subprocess
? nt imported from ntpath, os, shutil
? nturl2path imported from urllib.request
? org.python.core imported from copy, pickle
? os.path imported from os, pkgutil, py_compile, tracemalloc, unittest, unittest.util
? vms_lib imported from platform
? winreg imported from mimetypes, platform, urllib.request
This is not necessarily a problem - the modules may not be needed on this platform.
creating directory build/exe.macosx-10.6-intel-3.6/lib
Copying data from package collections...
Copying data from package email...
Copying data from package encodings...
Copying data from package html...
Copying data from package http...
Copying data from package importlib...
Copying data from package json...
Copying data from package logging...
Copying data from package pydoc_data...
Copying data from package sqlite3...
Copying data from package unittest...
Copying data from package urllib...
Copying data from package xml...
...
copying database/project.db -> build/exe.macosx-10.6-intel-3.6/project.db
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/objdump: 'database/project.db': The file was not recognized as a valid object file.
fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: internal objdump command failed
生成的文件夹包含:
Project (with the icon "exec" on my system, but no .exe extension)
project.db (not in a database/ folder, just side by side with the rest)
lib/
Python (with the icon "exec" on my system, but no .exe extension)
在其系统(Windows 10)上测试时,首先他必须手动将扩展名“.exe”添加到“Project”文件中,否则它只显示为文件夹,然后在运行时,它只是说“此应用程序无法在您的PC上运行”。
我不明白为什么它不起作用。你知道吗,我做错了什么?
感谢您的帮助!