[英]When I create a virtualenv, python runs in 64-bit even when already set to 32-bit in OSX
我的設置是:2.6.1 python(蘋果默認,雪豹),virtualenv,並使用 virtualenvwrapper
在環境之外,一切都以 32 位運行,這很好。 但是對於一個新項目,我要處理需要 django 1.3 和大量依賴項,所以我制作了一個 virtualenv。
我已經成功地安裝了所有東西,除了 mysql-python(通過 pip)得到“mach -o wrong architecture”的錯誤。 我已經檢查了我的 python 解釋器在 virtualenv 中的“import sys; sys.maxint”和 python 以 64 位運行。
我已經通過“默認寫入 com.apple.versioner.python Prefer-32-Bit -bool yes”將系統范圍內的 python 設置為 32 位運行
有誰知道為什么會在 virtualenv 內部發生這種情況?
Apple 用於在 OS X 10.6 中為系統 Python 實現其Prefer-32-bit
的大部分“魔法”位於/usr/bin/python
中,然后調用真正的 Python 解釋器,這些解釋器在/usr/bin/python2.6
處符號鏈接/usr/bin/python2.6
和/usr/bin/python2.5
。 virtualenv
將真實解釋器復制到 virtualenv bin
目錄中,因此繞過了Prefer-32-bit
處理。
在確保 32 位操作的選項中:
使用arch
命令調用解釋器。
$ virtualenv -p /usr/bin/python2.6./p $./p/bin/python -c 'import sys;print(sys.maxsize)' 9223372036854775807 $ arch -i386./p/bin/python -c 'import sys;print(sys.maxsize)' 2147483647
使用lipo
僅從通用二進制文件中提取 32 位拱門。
$ file./p/bin/python./p/bin/python: Mach-O universal binary with 3 architectures./p/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64./p/bin/python (for architecture i386): Mach-O executable i386./p/bin/python (for architecture ppc7400): Mach-O executable ppc $ cp./p/bin/python./p/bin/python-universal $ lipo./p/bin/python-universal -thin i386 -output./p/bin/python $ file./p/bin/python./p/bin/python: Mach-O executable i386 $./p/bin/python -c 'import sys;print(sys.maxsize)' 2147483647
安裝和使用更新的僅 32 位 Python 2.6 或 2.7(安裝程序可從python.org 獲得)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.