启动spyder后,'import sitecustomize'失败

时间:2013-06-23 07:39:04

标签: python installation install spyder

我正在尝试安装python。或者实际上,现在已经安装和卸载了几次。我正在使用pythonxy与spyder IDE(我习惯使用matlab是我想使用spyder的原因)。 3.3.2 python甚至不会在我的win8机器上用spyder开始,所以现在我安装了2.7版本。

Spyder现在启动,但在启动时我得到'import sitecustomize'失败了?在我的控制台和python中不会执行我输入的任何命令。在错误之后,startupscript继续不做任何事情,我不能再做任何事了。该错误告诉我用-v附录启动python,输出如下。

我搜索了这个错误,这给了我两个可能的解决方案: 我应该编辑python.rb https://github.com/mxcl/homebrew/commit/10ba101c323f98118b427f291e15abc5b3732991 或者我应该将此(在那里的最后一篇文章中的附件)应用于sitecustomize https://code.google.com/p/spyderlib/issues/detail?id=771

应用diff文件没有帮助,正如mata在下面解释的那样,在安装过程中使用.rb文件,因此不适用于我的问题。

所以我的问题:有人知道如何从经验中修复这个错误吗?

错误:

'import sitecustomize' failed; use -v for traceback
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

追溯:

C:\Python27\lib\site-packages\spyderlib\pil_patch.pyc matches C:\Python27\lib\site-packages\spyderlib\pil_patch.py

import spyderlib.pil_patch # precompiled from C:\Python27\lib\site-packages\spyderlib\pil_patch.pyc

Traceback (most recent call last):

  File "C:\Python27\lib\site.py", line 498, in execsitecustomize
    import sitecustomize

  File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 174, in <module>

    os.environ["SPYDER_AR_STATE"].lower() == "true")
  File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\monitor.py", line 146, in __init__

    self.n_request.connect( (host, notification_port) )
  File "C:\Python27\lib\socket.py", line 224, in meth

    return getattr(self._sock,name)(*args)

socket.error: [Errno 10061] No connection could be made because the target machine actively refused it

Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

4 个答案:

答案 0 :(得分:3)

(Spyder dev here)我几乎可以肯定你的问题是因为防火墙问题。看起来您的防火墙太严格了,它阻止了所有试图为我们的目的打开端口的尝试。

为了避免在评估内容时阻塞整个应用程序,我们在一个与Spyder运行的进程不同的进程上运行python解释器。我们使用简单的套接字协议与该进程进行通信,该协议在您的计算机上打开一个新端口,并通过该端口在控制台和Spyder之间来回发送数据。

这也是你没有在常规python解释器上看到错误的原因:因为它不需要打开一个端口来运行。

答案 1 :(得分:2)

在使用防火墙设置摸索后,我无法找到任何能让spyder工作的东西。
有些运行会起作用,有些则不会,完全相同的配置 我现在排除防火墙。

我注意到sitecustomize尝试连接的端口没有收听。
在启动spyder之前设置SPYDER_DEBUG=True会提供更多详细信息:

Traceback (most recent call last):
  File "P:\Python33\lib\threading.py", line 637, in _bootstrap_inner
    self.run()
  File "P:\Python33\lib\site-packages\spyderlib\widgets\externalshell\introspection.py", line 64, in run
    sock.bind( ("127.0.0.1", self.port) )
OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions`

我通过更换线路做了一个肮脏的黑客:

sock.bind( ("127.0.0.1", self.port) )

通过以下内容:

for loopCount in range(10, -1, -1):
  try:
    sock.bind( ("127.0.0.1", self.port) )
    break
  except OSError:
    if DEBUG:
      logging.debug('Notification server: Bind on port %d failed...' % (self.port))
    if not loopCount:
      raise
    import time
    time.sleep(1)

它似乎有效,但这可能比其他任何事情更幸运......

版本:

  • Spyder 2.3.0dev1
  • python 3.3.2(64位)

答案 2 :(得分:2)

按照Carlos Cordoba的回答,我做了以下(使用Ubuntu 15.10):

1-)禁用防火墙

sudo ufw disable 

2-)重置spyder并应用默认设置:

spyder --reset
spyder --default

3-)Ran Spyder再次

spyder

4-)启用防火墙

sudo ufw enable

它现在正常运作。

答案 3 :(得分:1)

我有同样的问题。工作了好几个月...... 来自EPEL图书馆的Redhat 7(Scientific Linux)的spyder。

最后想通了我需要一个未被设置为要求的额外包。蟒-matplotlib

添加python包后,我的所有问题都消失了!

Arrrggghhhhh ....... !!!!!