【要約】MacでVimからPythonを呼ぶとmathがimport出来ない [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
MacでVimをソースからビルドしたユーザーが、Python 3のインポートエラーに直面した。具体的には以下の事象が発生している。
- ・
:python3 import math実行時にImportErrorが発生。 - ・エラー内容は
symbol not found in flat namespaceである。 - ・
ctypes等の他のモジュールでも同様のシンボル欠落が発生する。
// Approach
開発者がバイナリの差異を多角的に調査し、原因を特定した。以下の手順で検証が行われた。
- ・
:versionでPython 3のサポート状況を確認。 - ・
cmpでビルド直後のバイナリとインストール済みバイナリを比較。 - ・
DYLD_PRINT_LIBRARIES=1でロードされるライブラリの差異を確認。 - ・
nmコマンドで特定のシンボル欠落を検証。 - ・
Makefileを調査し、stripが実行されていることを特定。
// Result
インストール時のstrip処理を無効化することで、正常な動作を実現した。具体的な成果は以下の通りである。
- ・
make install STRIP="echo"を実行。 - ・
stripをechoに置き換えてシンボル削除を回避。 - ・Pythonモジュールの正常なインポートを確認。
Senior Engineer Insight
> ビルド時の最適化が、実行時の動的リンクを破壊する典型的な事例だ。stripによるバイナリ軽量化は、共有ライブラリとの整合性を損なうリスクを孕む。CI/CD環境では、サイズ削減だけでなく、動的ロードの整合性検証を自動化すべきだ。