繁体   English   中英

mach-o 文件,但架构不兼容,有 'x86_64',需要 'arm64e' M1 MAC

[英]mach-o file, but is an incompatible architecture have 'x86_64', need 'arm64e' M1 MAC

from PyQt6.QtWidgets import *

from model.Department import Department
from view.main_window import Ui_Form
from model.Department import Department, Employee

class Homewidget(QWidget,Ui_Form):

    def __init__(self):
        QWidget.__init___(self)
        self.setupUi(self)

        self.depts = Department.get_all_depts()
        self.load_depts

        self.emps= Employee.get_all_emps()
        self.load_emps

        self.cb_depts.currentIndexChanged.connect(self.filter_emps_by_dept)
        self.le_search.textChanged.connect(self.filter_emps_by_name)


    def load_depts(self):
        names = [d.dept_name for d in self.depts]
        self.cb_depts.addItems(names)
    def load_emps(self):
        self.tb_emps.setRowCount(0)
        for i, e in self.emps:
            self.tb_emps.insertRow(i)
            for j, info in enumerate(e.__dict__.values()):
                self.tb_emps.setItem(i , j, QTableWidgetItem(str(info)))

    def filter_emps_by_dept(self, idx):
                    self.load_emps()
                    if idx != 0:
                        dept = self.depts[idx - 1]
                        for i, e in enumerate(self.emps):
                            if e.dept_id != dept.dept_id:
                                self.tb_emps.hideRow(i)
    def filter_emps_by_name(self):
        self.load_emps()
        query = self.le_search.text().lower()
        if query != "":
            for i , e in enumerate(self.emps):
                if not e.emp_name.lower().startswith(query):
                    self.tb_emps.hideRow(i)}

app = QApplication([])
window = Homewidget()
window.show()
app.exec()

这是我在 m1 MacBook Pro Monetery 上遇到的错误,无法为学校运行我的 GUI 项目。 PyQt6 在 arm64 中默认提供,我不确定,但我认为我的软件是 arm64e 我是 osx idk 的新手,我该怎么做才能将软件从 arm64e 更改为 arm64?

这是我在下面面临的错误......

ahmed@Ahmeds-MacBook-Pro hr_system % /usr/local/bin/python3 >/Users/ahmed/hr_system/app.py 回溯(最后一次调用):文件“/Users/ahmed/hr_system/app.py”,第 1 行,从 PyQt6.QtWidgets 导入 * ImportError:>dlopen(/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/sit>e-packages/PyQt6/QtWidgets.abi3.so, 0x0002) :库未加载:>@rpath/QtWidgets.framework/Versions/A/QtWidgets 引用自:>/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site->packages/PyQt6/QtWidgets。 abi3.so 原因:试过:>'/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site->packages/PyQt6/Qt6/lib/QtWidgets.framework/Versions/A/QtWidgets' ( mach-o >file,但是架构不兼容(有'x86_64',需要'arm64e'),>'/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site->packages/ PyQt6/Qt6/lib/QtWidgets.framework/Versions/A/QtWidgets'(mach-o >file,但是是不兼容的架构(有'x86_64',需要'arm64e')),>'/System/Libr ary/Frameworks/QtWidgets.framework/Versions/A/QtWidgets'(没有>这样的文件)

仅供参考,您可以在 pypi.org web 网站上查看 package 文件(请参阅: https://pypi.org/project/#file

macos.whl 文件(它只是一个 zip 文件)包含许多.so 文件,它们都是双体系结构(即它们包含 x86_64 和 arm64)。 上面的链接确实包含“源”package,您可以从中进行重建,但您需要安装 XCode 和开发人员工具。

您不需要 arm64e,M1 可以运行 arm64 或 arm64e 架构二进制文件。 我怀疑还有别的问题。 我会创建一个 venv,在其中安装所有内容,然后查找不支持 arm64 的 any.so 文件。 例如,使用:

find . -name "*.so" -exec file {} \;

还要确保你没有运行一些真正旧版本的 PyQT6。

如果您将 Mac 从 Intel 升级到 M1 并保留您的主目录或任何其他已安装的软件,则需要重新安装那些保留的软件包。 这包括安装了pip install --user (在 ~/.local 下)的 python 软件包,以及 virtualenv 中的任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM