【问题标题】:Installing PyCrypto for Python 3.2 on OS X 10.7在 OS X 10.7 上安装 PyCrypto for Python 3.2
【发布时间】:2012-07-09 01:55:41
【问题描述】:

我使用 Python 3.2 在 Mac OSX Lion 上编译并安装了 pycrypto 2.6,但是当我尝试运行命令时

import Crypto.Cipher.AES

我遇到了这个问题

Traceback (most recent call last):
File "/Users/DaZzz/Documents/Python Workspace/Cryptography Coursera/W2PA.py", line 8, in <module>
import Crypto.Cipher.AES
File "/Library/Python/2.7/site-packages/Crypto/Cipher/AES.py", line 50, in <module>
from Crypto.Cipher import _AES
ImportError: dlopen(/Library/Python/2.7/site-packages/Crypto/Cipher/_AES.so, 2): Symbol not found: _PyInt_FromLong
Referenced from: /Library/Python/2.7/site-packages/Crypto/Cipher/_AES.so
Expected in: flat namespace
in /Library/Python/2.7/site-packages/Crypto/Cipher/_AES.so

顺便说一句,我使用安装了 PyDev 的 eclipse。我也尝试在 IDLE 中运行它,但出现以下错误:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import Crypto.Cipher.AES
  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/Crypto/Cipher/AES.py", line 50, in <module>
    from Crypto.Cipher import _AES
ImportError: cannot import name _AES

需要强调的是,为了在 IDLE 中运行它,我将带有 Crypto 的目录复制到了 python 路径中。

我做错了什么?

【问题讨论】:

    标签: python macos python-3.x pycrypto


    【解决方案1】:

    看到消息中的/Library/Python/2.7 了吗?看来您实际上在这里运行的是 Python 2.7。您需要告诉 PyDev 使用 Python 3.2。你确定你使用的是 Python 3.2 版本的 IDLE 吗?每个版本的 Python 都有单独的 IDLE。尝试从命令行输入idle3.2,或者在Finder中点击/Applications/Python 3.2/IDLE.app

    更新:适用于我使用 python.org 64 位/32 位 Python 3.2.3 和 Xcode 4.3(您可能需要为 /Developer 创建符号链接以解决 Xcode 4.3 的 SDK 位置更改) .

    # for Xcode 4.3+ only
    $ [ ! -e /Developer ] && sudo ln -s Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer /Developer
    
    
    $ tar xf ./pycrypto-2.6.tar.gz
    $ cd ./pycrypto-2.6
    $ python3.2 setup.py install
    $ cd
    $ python3.2
    Python 3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import Crypto.Cipher.AES
    >>> Crypto.Cipher.AES.__file__
    '/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/Crypto/Cipher/AES.py'
    

    【讨论】:

    • 我已经修复了帖子。是,我确定。我使用 Python 3.2。 print("Hello world") 等其他代码可以正常工作。
    • 看起来 pycrypto 正在尝试使用 Python 2.7。检查您的项目设置。
    • print("Hello world") 适用于 Python 2.7 和 Python 3。可以肯定的是,请尝试 import sys; print(sys.version)
    • 3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] 确定。
    • @AleksandrKravets 很奇怪/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages 是空的。我想 PyCrypto 应该安装在这个目录中,但事实并非如此。它只安装在/Library/Python/2.7
    猜你喜欢
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 2015-07-10
    • 2013-12-28
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多