OSX上的Virtualenv使用的通用Python二进制文件与我指定的仅32位Python二进制文件不同

2024-03-29 09:20:13 发布

您现在位置:Python中文网/ 问答频道 /正文

在OSX上,我有一个Python通用二进制文件,它只包含32位代码:

$ file $(python3.2-32)
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3.2-32: Mach-O universal binary with 1 architecture
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3.2-32 (for architecture i386): Mach-O executable i386

我使用这个二进制文件创建了一个virtualenv:

^{pr2}$

但是virtualenv包含一个包含32位和64位代码的二进制文件:

$ . myenv/bin/activate
(myenv)$ file $(which python)
/Users/jhartley/myenv/bin/python: Mach-O universal binary with 2 architectures
/Users/jhartley/myenv/bin/python (for architecture i386):   Mach-O executable i386
/Users/jhartley/myenv/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64

我需要使用Python二进制文件,它只包含32位代码,而不是64位代码。在

我不介意它是一个通用的二进制文件,只要它在默认的32位模式下运行,而不必使用“arch-i386”调用它,因为我无法控制如何启动这个应用程序。在


Tags: 文件代码forbinlibrary二进制usersfile
1条回答
网友
1楼 · 发布于 2024-03-29 09:20:13

我不太清楚为什么会发生这种行为,但我可以提供一个解决办法。你可以把virtualenv的python一次剥离到i386。这样就不再需要环境标志来确保32位:

source bin/activate
file `which python`
# .../bin/python: Mach-O universal binary with 2 architectures
# .../bin/python (for architecture i386):   Mach-O executable i386
# .../bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64
lipo -thin i386 `which python` -output `which python`
file `which python`
# .../bin/python: Mach-O executable i386

相关问题 更多 >