簡體   English   中英

Python 在 Mac M1 上運行 C++ 擴展崩潰 ARM

[英]Python Running C++ Extension Crashes On Mac M1 ARM

最近從 Mac Intel 轉移到 M1 處理器,並且無法在任何地方找到任何東西來幫助解決我在使用 C++ 擴展的 Python 程序之一時遇到的問題。

我使用 distutils 將 C++ 代碼編譯成 darwin.so 二進制文件。 第一次設置環境並編譯二進制文件時,我沒有任何問題。 但是,在對 C++ 代碼進行更改並編譯新的二進制文件后,執行相應的 Python 代碼會崩潰,幾乎沒有關於原因的信息。 在控制台中,我有時會看到顯示“代碼簽名無效”的報告。 在終端中,它只是說“zsh:殺死 python xxxxxx.py”。 我的項目是使用 Conda Miniforge 在虛擬環境中設置的。

如果我重新啟動 Mac 並再次運行 Python,則不會發生此類崩潰,並且我在之前的編譯中所做的 C++ 代碼更改是有效的。 如果我對 C++ 代碼進行后續更改,它會再次崩潰,直到重新啟動。

找到解決方案后,我發布了上述問題,以防其他人偶然遇到同樣的事情。

經過各種測試,我確定我的問題是我的 distutils 設置腳本正在使用 shutil.copy 將新編譯的二進制文件移動到 Python 代碼正在尋找的不同位置。 我不知道為什么,但我發現如果安裝腳本在復制新二進制文件之前首先使用 os.remove 刪除舊二進制文件,問題就消失了。 我的猜測是 darwin.so 文件上的代碼簽名在被副本替換時保留了一些舊信息。

我不知道這是否真的與 M1 處理器有關,或者實際上與操作系統(Monterey)有關。 我以前沒有此問題的 Intel Mac 正在運行 Catalina。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM