gpt4 book ai didi

python - OSX 上的 "No module named _scproxy"

转载 作者:太空狗 更新时间:2023-10-30 02:34:56 51 4
gpt4 key购买 nike

我在预装 python 2.6 的 OSX 10.6 上,想通过 easy_install 或 setup.py(在下载的包中)安装 python 包。就我而言,我正在尝试安装 MySQLdb。在这两种情况下,我得到的堆栈跟踪都是这样结束的:

...
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/setuptools/command/easy_install.py", line 21, in <module>
from setuptools.package_index import PackageIndex, parse_bdist_wininst
File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/setuptools/package_index.py", line 2, in <module>
import sys, os.path, re, urlparse, urllib2, shutil, random, socket, cStringIO
File "/System/Library/Frameworks/Python/framework/Versions/2.6/lib/python2.6/urllib2.py", line 111, in <module>
from urllib import (unwrap, unquote, splittype, splithost, quote,
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 1335, in <module>
from _scproxy import _get_proxy_settings, _get_proxies
ImportError: No module named _scproxy

python安装是未修改的预装2.6.1版本,只是我把源文件加到lib文件夹下。 “find/System/Library/Frameworks/Python.framework/-name scproxy”没有产生任何结果。

如何安装缺少的模块?

最佳答案

背景

_scproxy 是特定于 Mac 的 urllib 帮助程序,它与特定于操作系统的库交互以执行 HTTP 请求。我的系统 (10.6.7) 上似乎也缺少它。初步,我认为它看起来像是系统 Python 构建的问题(我在 /System/Libraries 下找不到任何看起来像它的东西)。

Hack-o-rama 解决方案

(某种程度上)可以安装缺少的模块。但首先有一点建议:

您不应该TM 将您的系统 Python 安装搞得一团糟。学习使用 virtualenv 帮自己一个忙,并在全新的 virtualenv 上应用具有潜在危险的操作。这样您的系统就不会受到安装有问题的软件包的影响。

无论如何:Snow Leopard 上的标准 Python 是 2.6.1。我用最新的 2.6、2.6.6 做了我的实验,一个稍微安全的方法是下载它。然而,我的经验是不同的点释放可以很好地协同工作。

无论如何,我在我的 ~/src 目录中下载了 2.6.6,如下所示:

~/src/ext/python$ wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz
~/src/ext/python$ tar zxf Python-2.6.6.tgz
~/src/ext/python$ cd Python-2.6.6
~/src/ext/python$ ./configure

疯狂地控制垃圾邮件

~/src/ext/python$ make sharedmods

希望没有错误,更多控制台垃圾邮件

找到新建的_scproxy.so:

~/src/ext/python/Python-2.6.6$ find . -name '_scproxy.so'
./build/lib.macosx-10.4-x86_64-2.6/_scproxy.so # <- exact path may vary

您现在可以将 _scproxy.so 复制到 /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynlo
ad
(然后请记住,在您的系统 Python 中有一个自制的有点陌生的模块)。或者,更好的是,将它添加到 virtualenv 的 lib/python2.6/ 子目录中。完成这些事情后,我可以按照您的回溯中指示的方式导入 _scproxy:

Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from _scproxy import _get_proxy_settings, _get_proxies
>>>

这是一个强有力的迹象,表明通过需要 urllib 请求并使用 _scproxy 的方法安装包是可行的。不过,从那以后,您可以自己继续,因为我不想测试安装 MySQL 本身。

关于python - OSX 上的 "No module named _scproxy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5647023/

51 4 0