【问题标题】:Anaconda Python 32-bit is trying to load Anaconda 64-bit librariesAnaconda Python 32 位正在尝试加载 Anaconda 64 位库
【发布时间】:2014-08-11 15:01:25
【问题描述】:

我使用的是 Window 7 64 位,并尝试在同一系统上同时使用 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 中。结果是由于 32 位进程试图执行 64 位库(我认为),许多库调用失败。

我还尝试在 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 时保持默认设置)

谢谢!

编辑

This site 展示了一个 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)] 的事实意味着有些事情是非常错误的......

【问题讨论】:

  • 你怎么有Anaconda 2.0.1 (64-bit)
  • 打败我...这是我从 pythonC:\Anaconda32\python.exe 得到的(第 3 行和第 4 行已删除):C:\&gt;python Python 2.7.7 |Anaconda 2.0.1 (64-bit)| (default, Jun 11 2014, 10:40:02) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. &gt;&gt;&gt; quit() C:\&gt;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 &gt;&gt;&gt;
  • 我使用了来自continuum.io/downloadsAnaconda-2.0.1-Windows-x86.exe安装程序
  • Padraic Cunningham 应该说是 32 位是对的...有些地方很不对...在帖子中添加了一个编辑,显示了它应该是什么样子的示例。
  • 如果你真的想知道你的 Python 有多少位,请查看8*tuple.__itemsize__

标签: python windows python-2.7 64-bit anaconda


【解决方案1】:

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

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

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

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

【讨论】:

  • 我有同样的问题,你是如何删除“PYTHONHOME”和“PYTHONPATH”变量的? (我这样做是因为我正在尝试安装不会与 64 位版本的 Python 链接的 boost/python 库)。
  • 是否可以从Powershell单独打开每个版本?目前我只是在powershell和anaconda 1.8 64位中输入python,python 2.7.5启动。
  • 在 Windows 7 上,我执行控制面板 > 系统 > 高级系统设置(需要 UAC)> 高级选项卡 > 环境变量,然后找到变量并单击删除按钮。例如,当我需要为特定版本运行 pipconda 时,我使用 cd 导航到 C:\Anaconda3_64\Scripts,然后使用 where pip 来验证正确的路径是否位于列表的首位,然后运行我想要的 pip 或 conda 命令。否则 PyCharm 可以很好地处理解释器选择,或者我在开始菜单中打开适当的解释器(我在每个版本中重新创建了一些覆盖的快捷方式)。
  • 所以如果我理解我会从环境变量列表中删除变量。之后,我可以将目录(在 Powershell/cmd 中)更改为适当版本的 anaconda 并使用 python.exe 运行我想要的版本。但是 boost 库如何知道要使用哪个版本(以及在哪里可以找到正确的版本)。
猜你喜欢
  • 1970-01-01
  • 2015-05-30
  • 2015-04-16
  • 2016-06-01
  • 1970-01-01
  • 2016-02-13
  • 2015-02-25
  • 2014-12-24
  • 2017-06-10
相关资源
最近更新 更多