python-3.x - cx_Freeze "ImportError: cannot import name 'vision"
问题描述
我正在尝试冻结的 Python 脚本中使用 TensorFlow。一切都很好,但是当我尝试运行它时,我收到了这个错误:
Traceback (most recent call last):
File "C:\Users\.conda\envs\lib\site-packages\cx_Freeze\initscripts__startup__.py", line 14, in run module.run()
File "C:\Users\.conda\envs\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run exec(code, m.dict)
File "config.py", line 21, in
File "E:\Projects\test.py", line 7, in from google.cloud import vision
ImportError: cannot import name 'vision'
我正在使用 cx_Freeze。google 库已成功添加到Setup.py
脚本中。__init__.py
也存在于 google 目录中。
Setup.py
:
from cx_Freeze import setup, Executable
import sys
import os
base = None
os.environ['TCL_LIBRARY'] = "C:\\ProgramData\\Anaconda3\\tcl\\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\\ProgramData\\Anaconda3\\tcl\\tk8.6"
os.environ["REQUESTS_CA_BUNDLE"] = os.path.join(os.getcwd(), "cacert.pem")
if sys.platform == 'win32':
# base = "Win32GUI"
base = 'Console'
if sys.platform == 'win64':
# base = "Win64GUI"
base = 'Console'
include = ['numpy.core._methods', 'numpy.lib.format', 'jinja2', 'jinja2.ext', 'asyncio', 'constants', 'jinja2.debug']
packages = ['asyncio', 'jinja2', 'jinja2.ext', 'flask', 'numpy', 'pandas', 'connect_db', 'pymysql', 'pymysql.cursors',
'multiprocessing', 'multiprocessing.pool','google']
excludes = []
options = {'build_exe': {'packages': packages, 'includes': include, 'include_files': includefiles, 'excludes': excludes}}
flaskapp = Executable(script="config.py",
targetName="test.exe",
icon='test.ico'
)
setup(
name="",
version="1.0",
author="Test",
description="Test",
options={
'build_exe': {
'include_files': includefiles,
'includes': include,
'packages': packages,
'excludes': excludes,
'build_exe': "build"
}
},
executables=[flaskapp]
)
先感谢您
解决方案
根据 GitHub 存储库,google/cloud/__init__.py
包含以下代码:
try:
import pkg_resources
pkg_resources.declare_namespace(__name__)
except ImportError:
import pkgutil
__path__ = pkgutil.extend_path(__path__, __name__)
cx_Freeze 可能无法识别此动态导入。尝试在安装脚本中添加'pkg_resources'
或'pkgutil'
到列表中。'packages'
编辑:
显然,当使用 pip 安装时,目录__init__.py
中也缺少该文件。尝试在冻结之前手动将空文件添加到此目录。path_to_python_lib/site-packages/google/cloud/
google-cloud-vision
__init__.py
推荐阅读
- python - 如何在 15 天范围内的网站上使用 selenium 遍历日期范围?
- python - 如何在 Python 中创建可以使用 PIP 安装的 CLI?
- events - 将事件对象从触发函数传递到另一个函数
- python - 美术馆安装Python脚本间歇性锁定,移除热像仪传感器读取功能似乎有效?
- sqlite - sqlite3.OperationalError:靠近“[Total Babies]”:语法错误
- javascript - Angular 的 FormArray 什么时候是传统数组,什么时候是 FormArray 对象?
- c - 我想在 notepad++ 中编译 c 代码,但我无法设置 nppexec
- c# - 基于需要添加到列表的 POCO 添加到现有模型
- python - 允许用户查看他们播放特定曲目的次数的 Django 对象
- error-handling - 使用基于 kafka-stream-binder 的应用程序处理 Spring 云流中的应用程序错误的最佳方法是什么?