7

我在虚拟环境包装器中运行 python,并尝试导入 UUID。这是我收到的信息:

python -v
>>> import uuid


# /home/tanzaho/.virtualenvs/django_wordiz/lib/python2.7/site-packages/uuid.pyc matches /home/tanzaho/.virtualenvs/django_wordiz/lib/python2.7/site-packages/uuid.py
import uuid # precompiled from /home/tanzaho/.virtualenvs/django_wordiz/lib/python2.7/site-packages/uuid.pyc
import ctypes # directory /usr/lib/python2.7/ctypes
# /usr/lib/python2.7/ctypes/__init__.pyc matches /usr/lib/python2.7/ctypes/__init__.py
import ctypes # precompiled from /usr/lib/python2.7/ctypes/__init__.pyc
dlopen("/home/tanzaho/.virtualenvs/django_wordiz/lib/python2.7/lib-dynload/_ctypes.dll", 2);
import _ctypes # dynamically loaded from /home/tanzaho/.virtualenvs/django_wordiz/lib/python2.7/lib-dynload/_ctypes.dll
# /usr/lib/python2.7/struct.pyc matches /usr/lib/python2.7/struct.py
import struct # precompiled from /usr/lib/python2.7/struct.pyc
dlopen("/home/tanzaho/.virtualenvs/django_wordiz/lib/python2.7/lib-dynload/_struct.dll", 2);
import _struct # dynamically loaded from /home/tanzaho/.virtualenvs/django_wordiz/lib/python2.7/lib-dynload/_struct.dll
# /usr/lib/python2.7/ctypes/_endian.pyc matches /usr/lib/python2.7/ctypes/_endian.py
import ctypes._endian # precompiled from /usr/lib/python2.7/ctypes/_endian.pyc
# /usr/lib/python2.7/ctypes/util.pyc matches /usr/lib/python2.7/ctypes/util.py
import ctypes.util # precompiled from /usr/lib/python2.7/ctypes/util.pyc

之后,python 只是停止而没有任何其他警告。我试图从 Cygwin 重新安装库,但这没有帮助。

有没有办法解决这个问题?

我应该指定我在 Windows7 64 位下使用 python 2.7。

编辑 以下链接帮助我找到了可能的错误源:Bug python 18784。但是我查看了补丁中指定的代码,似乎 python 甚至没有达到这一点。

解决方案 由于我的声誉太低,我无法“输入解决方案”,因此我将其作为编辑发布在这里。我通过以下补丁找到了解决方案:http: //bugs.python.org/file20685/issue11063.patch

4

3 回答 3

6

我在 64 位 Cygwin 上也有同样的症状。安装“libuuid-devel”和“binutils”Cygwin 软件包为我解决了导入崩溃问题。

有关解决方案的更多讨论,请访问:https ://github.com/kennethreitz/requests/issues/1547 。

于 2013-10-08T05:27:04.860 回答
1

安装 libuuid-devel

解决方案在这里https://github.com/kennethreitz/requests/issues/1547#issuecomment-29301616

apt-cyg install libuuid-devel

在此之后安装工作

easy_install requests

printf "help('modules')" | python | grep requests
array               hotshot             requests            xmlrpclib
于 2014-05-21T23:21:29.460 回答
0

正如 Yaakov 所指出的,您遇到的错误已报告为CPython Issue 18784,并已于 2013 年 9 月 13 日在 Python 2.7、3.3 和开发分支 (3.4) 的维护分支中得到修复。

如果您需要修补现有的 Python 系统,您可以使用Evgeny Sologubov 提供的以下简单补丁来完成,该补丁可以在 uuid 例程被定位后使 uuid 模块短路,以免尝试加载更多库:

diff -r 4a318a45c4c3 Lib/uuid.py
--- a/Lib/uuid.py   Mon Aug 19 13:07:18 2013 -0400
+++ b/Lib/uuid.py   Mon Aug 19 21:41:08 2013 +0400
@@ -429,6 +429,8 @@
             _uuid_generate_random = lib.uuid_generate_random
         if hasattr(lib, 'uuid_generate_time'):
             _uuid_generate_time = lib.uuid_generate_time
+            if _uuid_generate_random is not None:
+                break  # found everything we were looking for

     # The uuid_generate_* functions are broken on MacOS X 10.5, as noted
     # in issue #8621 the function generates the same sequence of values

ctypes 还有一些更深层次的问题需要解决,但这应该可以解决人们在 Cygwin64 上安装 Python 包时遇到的许多主要问题。

于 2013-10-02T14:40:46.543 回答