MrA*_*med 19 python mach-o arm64 apple-m1 pyqt6
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()
Run Code Online (Sandbox Code Playgroud)
这是我在 m1 MacBook Pro Monetery can't run my GUI project for school 上遇到的错误。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 import * 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 >文件,但是是不兼容的架构(有'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 >文件,但是不兼容的架构(有'x86_64',需要'arm64e')),>'/System/Library/Frameworks/ QtWidgets.framework/Versions/A/QtWidgets'(没有>这样的文件)
小智 1
仅供参考,您可以在 pypi.org 网站上查看可用的包文件(请参阅: https: //pypi.org/project/PyQt6/#files)。
macos .whl 文件(它只是一个 zip 文件)包含许多 .so 文件,它们都是双架构的(即包含 x86_64 和 arm64)。上面的链接确实包含您可以重建的“源”包,但您需要安装 XCode 和开发人员工具。
您不需要arm64e,M1 可以运行arm64 或arm64e 架构二进制文件。我怀疑是其他问题。我会创建一个 venv,在其中安装所有内容,然后查找任何不支持 arm64 的 .so 文件。例如,与:
find . -name "*.so" -exec file {} \;
Run Code Online (Sandbox Code Playgroud)
还要确保您没有运行一些非常旧版本的 PyQT6。