执行 cx_Freeze 结果时的循环依赖

2023-12-01

我面临着一个非常简单的重现问题,但我根本不明白发生了什么。

我尝试编译一个Python脚本,它使用fastparquet依赖关系,与 cx_Freeze。当我直接启动它时,我能够执行我的脚本python script.py。但是如果我用 cx_Freeze 编译它,我会收到一个循环依赖错误fastparquet进口。下面是一个重现该问题的非常简单的案例:

脚本.py:

import fastparquet

设置.py:

#!/usr/bin/env python3
from cx_Freeze import setup, Executable

setup(
    name="test",
    executables=[Executable("script.py", base="Console", target_name="test.exe")],
)

如果我启动python script.py直接,我得到:

(test) O:\Temp\Tests\python\test_cx_Freeze>python script.py

(test) O:\Temp\Tests\python\test_cx_Freeze>

所以什么也没有(也没有错误),因为脚本只做了一个import.

如果我使用命令 cx_Freeze 编译相同的脚本python setup.py build,然后我启动text.exe结果,我收到以下循环依赖错误:

(test) O:\Temp\Tests\python\test_cx_Freeze\build\exe.win32-3.8>test.exe
Traceback (most recent call last):
  File "C:\Users\alexa\Envs\test\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 74, in run
    module.run()
  File "C:\Users\alexa\Envs\test\lib\site-packages\cx_Freeze\initscripts\Console.py", line 36, in run
    exec(code, m.__dict__)
  File "script.py", line 1, in <module>
  File "C:\Users\alexa\Envs\test\lib\site-packages\fastparquet\__init__.py", line 5, in <module>
    from .core import read_thrift
  File "C:\Users\alexa\Envs\test\lib\site-packages\fastparquet\core.py", line 9, in <module>
    from . import encoding
  File "C:\Users\alexa\Envs\test\lib\site-packages\fastparquet\encoding.py", line 11, in <module>
    import numba
  File "C:\Users\alexa\Envs\test\lib\site-packages\numba\__init__.py", line 19, in <module>
    from numba.core import config
  File "C:\Users\alexa\Envs\test\lib\site-packages\numba\core\config.py", line 16, in <module>
    import llvmlite.binding as ll
  File "C:\Users\alexa\Envs\test\lib\site-packages\llvmlite\binding\__init__.py", line 4, in <module>
    from .dylib import *
  File "C:\Users\alexa\Envs\test\lib\site-packages\llvmlite\binding\dylib.py", line 3, in <module>
    from llvmlite.binding import ffi
ImportError: cannot import name 'ffi' from partially initialized module 'llvmlite.binding' (most likely due to a circular import) (O:\Temp\Tests\python\test_cx_Freeze\build\exe.win32-3.8\lib\llvmlite\binding\__init__.pyc)

我检查了一下似乎有什么问题:

  • llvmlite.binding模块是通过导入的numba
  • 然后,里面的文件之一llvmlite.binding,尝试导入子模块ffi通过使用from llvmlite.binding import ffi

对我来说,这不是循环依赖,因为第二次导入没有导入所有llvmlite.binding模块但仅llvmlite.binding.ffi.

我不明白:

  • 为什么第二次导入被视为循环依赖?
  • 为什么使用调用我的脚本之间存在差异python命令行和 cx_Freeze 结果?是因为 cx_Freeze 结果用于处理依赖关系的方法吗?

packages = ["llvmlite.binding"] 应该可以解决这个问题。

https://cx-freeze.readthedocs.io/en/latest/distutils.html#build-exe

编辑: cx_Freeze 6.6 刚刚发布,并针对此问题提供了挂钩。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

执行 cx_Freeze 结果时的循环依赖 的相关文章

  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • 使用 Django Rest 保存 Base64ImageField 类型会将其保存为原始图像。如何将其转换为普通图像

    我的模型中有 5 个图像字段 imageS imageS imageS imageS 和 imageE 我正在尝试按以下方式保存图像 图像的类型Base64ImageField images imageA imageB imageC ima
  • 如何在 Python 3 中循环遍历集合,同时从集合中删除项目

    这是我的情况 我有一个list set 哪个并不重要 movieplayer我想调用的对象 preload 功能开启 该预加载函数可以立即返回 但希望将来返回一点 我想存储这个电影播放器 集合 表明它们尚未预加载 然后循环它们 调用prel
  • 如何在Python 3中将文本流编码为字节流?

    将字节流解码为文本流很容易 import io f io TextIOWrapper io BytesIO b Test nTest n utf 8 f readline 在这个例子中 io BytesIO b Test nTest n 是
  • setColumnStretch 和 setRowStretch 如何工作

    我有一个使用构建的应用程序PySide2它使用setColumnStretch用于柱拉伸和setRowStretch用于行拉伸 它工作得很好 但我无法理解它是如何工作的 我参考了 qt 文档 但它对我没有帮助 我被困在括号内的两个值上 例如
  • 使用 pyppeteer 与 asyncio 关联来抓取内容

    我用 python 结合编写了一个脚本pyppeteer随着asyncio从其登陆页面抓取不同帖子的链接 并最终通过跟踪通向其内页的 url 来获取每个帖子的标题 我这里解析的内容不是动态的 但是 我利用了pyppeteer and asy
  • python win32com.client 调整窗口大小

    我正在使用 Python 3 4 1 通过 win32com client 控制 Windows 应用程序 我可以激活它 我可以发送击键 点击等 现在我想知道是否有办法调整窗口大小并将其设置到特定位置 我找不到方法 这里有一些代码片段 所以
  • 哈希 freezeset 与排序元组

    在 Python 中 给定一组可比较的 可散列的元素s 散列是否更好frozenset s or tuple sorted s 这取决于你在做什么 创建一个更快frozenset 比排序tuple but frozenset占用的内存比tu
  • 如何在Python中捕获打印机事件

    我想在打印机开始打印时捕获信号 如果你告诉我如何获取将要打印的文档的路径 那就太好了 pywin32print看起来很有用 但不知道怎么用 要获得新打印作业的通知 您可以使用FindFirstPrinterChangeNotificatio
  • 在 Windows 上导入 scipy.linalg 时出错(python 3.3)

    我在 Windows 上使用 python 3 3 我下载了scipy 0 13 2 win32 py3 3 exe from scipy 库 http www lfd uci edu 7Egohlke pythonlibs scipy并安
  • 将文件拆分为块

    我正在尝试分割格式为以下的文件 some garbage lines target G0 S0 type xy 0 108847E 02 0 489034E 04 0 108711E 02 0 491023E 04 0 108574E 02
  • Python - 如何实现“可停止”线程?

    已经发布解决方案了here https stackoverflow com questions 323972 is there any way to kill a thread in python创建一个可停止的线程 但是 我在理解如何实施
  • 使用 pyspark awsglue 时显示 DataFrame

    如何使用 awsglue 的 job etl 显示 DataFrame 我尝试了下面的代码 但没有显示任何内容 df show code datasource0 glueContext create dynamic frame from c
  • Selenium 3 Firefox .click() 不起作用

    自从我升级到最新的 Selenium 版本后 我的 Firefox 驱动程序无法正常工作 未能通过搜索 Google Stack 找到答案 我希望这里有人能找到答案 我已经构建了一个页面对象模型 用于登录网页 单击管理站点并填写用户名 密码
  • SMTP 库 Python3:不太安全的应用程序访问

    自 5 月 30 日起 Google 已取消允许不太安全的应用程序访问 G Mail 我正在使用 SMTP 库从我的 Flask 网站发送电子邮件 由于这种方法需要 Google 刚刚删除的功能 所以我陷入了困境 我正在寻找此问题的任何解决
  • 无法截取宽度为 0 的屏幕截图

    我正在尝试截取 Bootstrap 模态内元素的屏幕截图 经过一番努力 我终于想出了这段代码 driver get https enlinea sunedu gob pe driver find element by xpath div c
  • Asyncio 中的无限循环或“递归”

    我是 Python3 asyncio 的新手 我有一个函数可以不断地从 websocket 连接检索消息 我想知道我是否应该使用while True循环或asyncio ensure future以递归方式 哪个是首选还是不重要 Examp
  • 在 python 中指定文件夹位置时使用 / 和 \\ 有什么区别?

    我在 Windows 10 上使用 python v3 6 当指定字符串来表示目录位置时 下面的 2 种方法有什么区别 folder location C Users username Dropbox Inv folder location
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • 在 Tkinter 中使用锚点

    我正在尝试对自动点唱机进行编程 但是我还处于早期阶段 并且在使用时遇到了问题anchor 这是我的代码 from tkinter import from tkinter import messagebox as box def main m

随机推荐

  • 使用 nservicebus 延迟消息

    我正在处理 nServiceBus 我想在失败时重试并在另一时间发送一条消息 我听说过 Bus Defer 但我对它的理解有限 我有一个检查股票代码的系统 它会检查命令何时被调用 并在晚上 8 点之后重新安排另一次检查 我有 CheckCu
  • 如何使用 dplyr 过滤数据而不丢失 NA 行

    如何在 R 中对数据进行子集化而不丢失 NA 行 上面的帖子使用逻辑索引的子集 有没有办法在 dplyr 中做到这一点 Also dplyr什么时候自动删除NA 根据我的经验 当我过滤掉特定字符串时 它会删除 NA 例如 b a gt fi
  • LittleMonkey QRScanner 库构建问题

    我使用过littleMonkey QRScanner 库 但它可以在模拟器中工作 显示扫描仪不支持对话框 但是当我构建项目时它给出了构建错误 PS 我已经删除了所有构建提示并再次刷新库 但仍然存在同样的问题 我按照建议保留了 cn1 cod
  • 应用内结算,无法使 RESULT_DEVELOPER_ERROR 消失

    我正在尝试在 Android 上进行应用内计费 但 在尝试初始化事务时不断获得以下 logcat 输出 from logcat BillingService Billing service connected CheckBillingSup
  • python 正则表达式不匹配序列

    我需要用 HTML 标签包装一些 MathJax 字符串 我想知道如何排除 从搜索字符串不匹配完整字符串 使用单个字符很容易 例如 但是当我需要做同样的事情时该怎么办 例如两个字符相继出现 search str ce sigma s b H
  • scala 不明确支持依赖类型的任何原因?

    有路径依赖类型 我认为在 Scala 中可以表达 Epigram 或 Agda 等语言的几乎所有功能 但我想知道为什么 Scala 不支持this更明确地说 它在其他领域 例如 DSL 做得很好 我错过了什么 比如 没有必要 吗 除了语法便
  • 根据选择将 JSON 数据输入 Spinner

    Data is coming form JSON RESPONSE In JSON Every Tag contains number of nodes Relevant data into second spinner is based
  • 如何更改 Google 本机文档中的元数据语言

    我可以使用 API Drive 2 0 将本机 Google 文档创建到 Google Drive 但是 我无法更改语言正文文档 我认为 TargetLanguage 和 SourceLanguage 属性有其他目标 并且它们不允许在 SD
  • 如何发送数组作为 (jquery) ajax 请求的一部分

    我尝试发送一个数组作为 ajax 请求的一部分 如下所示 var query in between I add some values to query ajax url MyServlet data query dataType json
  • 使用 null 的方法重载选择

    鉴于此代码 class Overloading extends Object static public void target Object val String chk System out println Object val Sho
  • Joomla 错误:“非法变量 _files 或 _env 或 _get 或 _post 或 _cookie 或 _server 或 _session 或全局变量传递给脚本”

    我在 Joomla 中收到此错误 Illegal variable files or env or get or post or cookie or server or session or globals passed to script
  • 按元组的指定元素对具有元组键的字典进行排序

    我有一个字典列表 字典键是元组 例如 0 5 我想按元组的值对列表进行排序 1 我尝试使用方法列表排序的关键参数 但我不知道要在 lambda 中放入什么 我尝试这样做 key lambda k 1 输入示例 5 9 item 0 4 it
  • JTextField 时间(HH:mm:ss)

    我有一个浮动的特定任务所需的估计时间 以分钟为单位 如何将其放入 JFormattedTextField 中 格式为HH mm ss 对于 Calendar and DateFormat float minutes 100 5f 1 40
  • 如何在Python中使用联合类型? [复制]

    这个问题在这里已经有答案了 我找到了以下代码 def get iterator from config config dict data dict iterator config config dataset iterator iterat
  • Solrj 从 Android 索引文档

    我正在尝试使用 Android 应用程序中的 Solrj 来索引文档 但它似乎不起作用 我关注这个LINK 这是我正在编写的代码 package com example secondapp import android app Activi
  • SQLite数据库错误,无用日志

    我发布了应用程序的更新 但从用户那里收到了大量错误 我无法重新创建它或查明问题 我收到两个错误 java lang IllegalStateException attempt to re open an already closed obj
  • Angular Router - 网址更改但视图未加载

    我刚刚开始调整示例角度 离子选项卡导航应用程序 但遇到了问题 当我点击一个视图中的链接 所有旅程的列表 时 我应该被带到一个屏幕 其中包含有关该特定旅程的详细信息 改编自示例应用程序中的 聊天 然而它并不完全有效 URL 更改为预期的 UR
  • 如何为复杂的计算设置超时?

    我正在写一个像这样的程序 results for i in range 30 x 4 5 i results append x 然而 当i变得更大 结果并没有太大而无法提高 OverflowError 这将需要一个long计算结果的时间 所
  • 停止函数写入标准输出

    我的代码中有这一行 writer cv CreateVideoWriter video avi cv CV FOURCC X V I D 30 480 800 1 哪些输出可以对此进行控制台 Output 0 avi to video av
  • 执行 cx_Freeze 结果时的循环依赖

    我面临着一个非常简单的重现问题 但我根本不明白发生了什么 我尝试编译一个Python脚本 它使用fastparquet依赖关系 与 cx Freeze 当我直接启动它时 我能够执行我的脚本python script py 但是如果我用 cx