繁体   English   中英

Anaconda Python 32位正在尝试加载Anaconda 64位库

[英]Anaconda Python 32-bit is trying to load Anaconda 64-bit libraries

我在64位Windows 7上,尝试在同一系统上同时使用Anaconda Python 64位和32位发行版。

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

我还尝试在cmd.exe会话中编辑路径,以仅包括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位主安装不受影响(在我输入python时保留默认设置)

谢谢!

编辑

该站点显示了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)]表示有些错误。

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

通过删除PYTHONHOME,我可以并行运行Anaconda 32位和64位。 在命令提示符下键入python时,我路径中最先出现的那个都会自动运行。 当我打开任何一个解释器时,我都会得到正确的版本和位信息,并且它们会加载正确的库。 另外,由于我选择在安装过程中将每个设置为默认python,因此设置了32位和64位python注册表项,允许安装程序查找相应的安装。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM