簡體   English   中英

當我創建一個 virtualenv 時,python 運行在 64 位,即使在 OSX 中已經設置為 32 位

[英]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 位操作的選項中:

  1. 使用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
  2. 使用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
  3. 安裝和使用更新的僅 32 位 Python 2.6 或 2.7(安裝程序可從python.org 獲得

暫無
暫無

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

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