Anaconda Python 32位正试图加载Anaconda 64位库

我在Windows 7 64位,并试图在同一个系统上使用pythonPython 64位和32位分布。

我希望能够构buildWindows 32位可执行文件以进行分发(使用py2exe),这需要使用32位Python解释器。 我以前已经安装了Anaconda Python 64位到C:\ Anaconda。 我现在已经安装了32位的Anaconda Python发行版到C:\ Anaconda32。 但是,当我尝试从C:\ Anaconda32 \ python.exe运行python解释器时,它正在将64位环境加载到我的sys.path中。 结果是很多库调用失败,由于32位进程试图执行64位库(我认为)。

我也尝试编辑cmd.exe会话中的path,只包含C:\ Anaconda32和C:\ Anaconda32 \ Scripts。

结果如下:

C:\Anaconda32>echo %path% C:\Anaconda32;C:\Anaconda32\Scripts C:\Anaconda32>python.exe Python 2.7.7 |Anaconda 2.0.1 (64-bit)| (default, Jun 11 2014, 10:41:43) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. Anaconda is brought to you by Continuum Analytics. Please check out: http://continuum.io/thanks and https://binstar.org >>> import sys >>> sys.executable 'C:\\Anaconda32\\python.exe' >>> sys.path ['', 'C:\\Anaconda32\\python27.zip', 'C:\\Anaconda\\DLLs', 'C:\\Anaconda\\lib', 'C:\\Anaconda\\lib\\plat-win', 'C:\\Anaconda\\lib\\lib-tk', 'C:\\Anaco nda32', 'C:\\Anaconda', 'C:\\Anaconda\\lib\\site-packages', 'C:\\Anaconda\\lib\\site-packages\\PIL', 'C:\\Anaconda\\lib\\site-packages\\win32', 'C:\\A naconda\\lib\\site-packages\\win32\\lib', 'C:\\Anaconda\\lib\\site-packages\\Pythonwin', 'C:\\Anaconda\\lib\\site-packages\\runipy-0.1.0-py2.7.egg', ' C:\\Anaconda\\lib\\site-packages\\setuptools-3.6-py2.7.egg'] >>> 

C:\Anaconda\DLLsC:\Anaconda\lib等是问题所在。 那些应该是C:\Anaconda32\*

我还想指出的是,虽然它在后面说Anaconda 2.0.1 (64-bit) ,它有编译器信息: [MSC v.1500 32 bit (Intel)] ,表示32位解释器是运行。 对sys.executable的调用也显示正确的解释器正在运行。

这是尝试加载大多数模块时的结果:

 >>> import numpy as np Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Anaconda\lib\site-packages\numpy\__init__.py", line 168, in <module> from . import add_newdocs File "C:\Anaconda\lib\site-packages\numpy\add_newdocs.py", line 13, in <module> from numpy.lib import add_newdoc File "C:\Anaconda\lib\site-packages\numpy\lib\__init__.py", line 8, in <module> from .type_check import * File "C:\Anaconda\lib\site-packages\numpy\lib\type_check.py", line 11, in <module> import numpy.core.numeric as _nx File "C:\Anaconda\lib\site-packages\numpy\core\__init__.py", line 6, in <module> from . import multiarray ImportError: DLL load failed: %1 is not a valid Win32 application. >>> 

ImportError: DLL load failed: %1 is not a valid Win32 application. 是什么时候试图从一个32位解释器加载64位编译模块我相信。

如何设置32位环境,以便加载32位库? 我宁愿我的64位主安装不受影响(保持默认情况下,当我inputpython

谢谢!

编辑

这个网站展示了一个32位的anaconda 2.0.1解释器应该是什么样子的例子。

Python 2.7.7 |Anaconda 2.0.1 (32-bit)| (default, Jun 11 2014, 10:41:43) [MSC v.1500 32 bit (Intel)]

所以我有|Anaconda 2.0.1 (64-bit)|的事实 和[MSC v.1500 32 bit (Intel)]意味着什么是非常错误的…

Solutions Collecting From Web of "Anaconda Python 32位正试图加载Anaconda 64位库"

我相信我的PYTHONHOME环境变量被设置为C:\ Anaconda(64位安装)。 当我试图运行C:\ Anaconda32 \ python.exe时,它看到了PYTHONHOME变量,并试图使用该目录作为从中加载库的位置。 这在Python文档中有解释。

通过删除PYTHONHOME,我可以并排运行32位和64位的Anaconda。 在我的路径中首先发生的任何事情都会在命令提示符下输入python时自动运行。 当我打开任何一个解释器,我得到正确的版本和位信息,并加载正确的库。 另外,因为我选择在安装过程中将每个设置为默认的python,所以设置了32位和64位的python注册表键,允许安装者找到相应的安装。

如果您想要并行使用多个版本的Python,我建议删除PYTHONHOME和PYTHONPATH(如果不需要它们以避免不同安装之间的环境冲突)。 我可能在这里错了,但这似乎解决了我的问题。

为了完全明确我安装到C:\ Anaconda32和C:\ Anaconda64。 这样,如果我看到任何只有C:\ Anaconda我知道这是不正确的。