编程语言
首页 > 编程语言> > python – OSX上的“没有名为_scproxy的模块”

python – OSX上的“没有名为_scproxy的模块”

作者:互联网

我在预装了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文件夹. “查找/System/Library/Frameworks/Python.framework/-name scproxy”不会产生任何结果.

如何安装缺少的模块?

解决方法:

背景

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

Hack-o-rama解决方案

(可能)安装丢失的模块.但首先提出一些建议:

你不应该用你的系统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 /子目录中.完成这些操作后,我可以以traceback中指示的方式导入_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请求utlizing _scproxy的方法安装包将起作用.从那以后,你可以自己继续,因为我不想自己测试安装MySQL.

标签:python,osx-snow-leopard,macos
来源: https://codeday.me/bug/20190531/1187836.html