gpt4 book ai didi

python - Pip/easy_install 在 SciPy 安装中忽略 ARCHFLAGS?

转载 作者:行者123 更新时间:2023-11-28 16:49:08 27 4
gpt4 key购买 nike

我正在尝试为 32 位和 64 位架构编译 SciPy,因为一些使用该库的应用程序只有一个架构,遵循 few 的建议SO questions .这个命令在大约两个月前的类似构建中对我有用,但现在看来一些编译的共享库只针对 x86_64:

sudo ARCHFLAGS="-arch i386 -arch x86_64"pip install scipy

我已经尝试了这个命令的几个版本,包括在 sudo 之前设置环境变量,包括 FFlags 中的 -m32 -m64,使用 OSX 命令行工具,完整的 Xcode 安装,在 official SciPy install instructions 之后使用 clang 而不是 OSX 附带的 LLVM , easy_install 而不是 pip 甚至 ./configure'ing 分开等等,但我似乎无法让它工作。奇怪的是,一些 .so 是用这两种架构构建的,但有些不是:

dhcp-10-249-71-202:~ kastman$ file /Library/Python/2.7/site-packages/scipy/optimize/*.so
/Library/Python/2.7/site-packages/scipy/optimize/_cobyla.so: Mach-O 64-bit bundle x86_64
/Library/Python/2.7/site-packages/scipy/optimize/_lbfgsb.so: Mach-O 64-bit bundle x86_64
/Library/Python/2.7/site-packages/scipy/optimize/_minpack.so: Mach-O 64-bit bundle x86_64
/Library/Python/2.7/site-packages/scipy/optimize/_nnls.so: Mach-O 64-bit bundle x86_64
/Library/Python/2.7/site-packages/scipy/optimize/_slsqp.so: Mach-O 64-bit bundle x86_64
/Library/Python/2.7/site-packages/scipy/optimize/_zeros.so: Mach-O universal binary with 2 architectures
/Library/Python/2.7/site-packages/scipy/optimize/_zeros.so (for architecture i386): Mach-O bundle i386
/Library/Python/2.7/site-packages/scipy/optimize/_zeros.so (for architecture x86_64): Mach-O 64-bit bundle x86_64
/Library/Python/2.7/site-packages/scipy/optimize/minpack2.so: Mach-O 64-bit bundle x86_64
/Library/Python/2.7/site-packages/scipy/optimize/moduleTNC.so: Mach-O universal binary with 2 architectures
/Library/Python/2.7/site-packages/scipy/optimize/moduleTNC.so (for architecture i386): Mach-O bundle i386
/Library/Python/2.7/site-packages/scipy/optimize/moduleTNC.so (for architecture x86_64): Mach-O 64-bit bundle x86_64

查看 make 日志,看起来似乎有效的库和无效的库都成功传递了 args:

# Minpack doesn't build fat binaries
/usr/local/bin/gfortran -Wall -Wall -undefined dynamic_lookup -bundle build/temp.macosx-10.7-intel-2.7/build/src.macosx-10.7-intel-2.7/scipy/optimize/minpack2/minpack2module.o build/temp.macosx-10.7-intel-2.7/build/src.macosx-10.7-intel-2.7/fortranobject.o build/temp.macosx-10.7-intel-2.7/scipy/optimize/minpack2/dcsrch.o build/temp.macosx-10.7-intel-2.7/scipy/optimize/minpack2/dcstep.o -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin11/4.6.2 -Lbuild/temp.macosx-10.7-intel-2.7 -lgfortran -o build/lib.macosx-10.7-intel-2.7/scipy/optimize/minpack2.so
building 'scipy.optimize._slsqp' extension
compiling C sources
C compiler: clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe

#... but moduleTNC does.
llvm-gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 build/temp.macosx-10.7-intel-2.7/scipy/optimize/tnc/moduleTNC.o build/temp.macosx-10.7-intel-2.7/scipy/optimize/tnc/tnc.o -Lbuild/temp.macosx-10.7-intel-2.7 -o build/lib.macosx-10.7-intel-2.7/scipy/optimize/moduleTNC.so
building 'scipy.optimize._cobyla' extension
compiling C sources
C compiler: clang -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe

有没有可能是我使用的 gfortran 编译器不同?我使用了 brew install gfortran,根据 SciPy 文档,这应该是好的。我认为重要的行是 C compiler: clang 行,它看起来几乎相同,包括两个 -arch。

我尝试过的最后一个最详细的构建是:

sudo env ARCHFLAGS="-arch i386 -arch x86_64"ARCH="i386 x86_64"CC="clang"CXX="clang"FFLAGS="-ff2c -m32 -m64"pip install scipy

有人对如何进一步诊断有什么建议吗?

(OSX 10.7,最近的 MacBookPro,从 CLI 工具和 Xcode 使用 gcc 编译)

最佳答案

从源代码中提取并构建似乎可以正确创建胖二进制文件。我不确定这是否是一个已经修复的错误(我在 scipy 开发列表中没有看到任何内容)或者它是否与 pip/easy_install 有关,但这是我为让它工作所做的工作:

git clone https://github.com/scipy/scipy.git; cd scipy
export ARCHFLAGS='-arch i386 -arch x86_64'
python setup.py config
python setup.py build
sudo python setup.py install

没有特殊的 CC 环境变量,gfortran 来自 brew install gfortran,令人惊讶的是 gcc 看起来像 llvm-gcc。

关于python - Pip/easy_install 在 SciPy 安装中忽略 ARCHFLAGS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046043/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com