【问题标题】:'import sitecustomize' failed upon starting spyder'import sitecustomize' 在启动 spyder 时失败
【发布时间】:2013-06-19 23:10:41
【问题描述】:

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

Spyder 现在启动了,但启动时出现“import sitecustomize”失败?在我的控制台中,python 不会执行我输入的任何命令。出现错误后,启动脚本会一直运行下去而没有做任何事情,我也不能再做任何事情了。错误告诉我用 -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.

【问题讨论】:

  • python.rb 是一个 ruby​​ 脚本,它告诉自制软件在安装 python 时要做什么,所以这不适用于你。您获得的完整堆栈跟踪是什么,以及您的 sitecustomize.py 中的内容是什么? python -v 的输出也可以帮助...
  • 当我在 command.com 中运行 python -v 时,它不会显示错误,当我尝试运行 spyder -v(例如在链接文件中添加 -v)时,它根本不会启动
  • 我现在在 pythonshell 中添加了 -v 参数并获得了“回溯”
  • 啊,所以问题只出在 spyder 中的 pythonshell 小部件中,而不是在运行普通的 pyhton 解释器时。似乎它试图创建一些用于监控的网络连接。也许有防火墙阻止了连接?
  • 我按照carlos的说明检查了,但是127.0.0.1没有限制

标签: python installation spyder


【解决方案1】:

(此处为 Spyder 开发人员)我几乎可以肯定您的问题是由于防火墙问题。您的防火墙似乎太严格了,它阻止了所有尝试为我们的目的打开端口的尝试。

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

这也是您在常规 python 解释器上看不到错误的原因:因为它不需要打开端口即可运行。

【讨论】:

  • 感谢您的帮助!知道如何让我的防火墙不那么严格吗?允许 spyder.exe 和 python.exe 通过并不能解决错误。
  • 我认为您可以只允许来自127.0.0.1 或localhost 的连接,这意味着您允许程序在您的机器内部(而不是互联网)创建连接
  • 向我的防火墙添加一个允许所有 127.0.0.1 连接的规则也没有帮助。
  • 好的,有两个问题:a) 你能在防火墙关闭的情况下运行 Spyder 吗? b) 你使用什么防火墙? (也许我可以在虚拟机上测试一下)。
  • 当我关闭防火墙时,我仍然收到错误消息。我正在使用 Windows 防火墙,这是 Windows 内置/自带的防火墙。
【解决方案2】:

按照 Carlos Cordoba 的回答,我执行了以下操作(使用 Ubuntu 15.10):

1-) 禁用防火墙

sudo ufw disable 

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

spyder --reset
spyder --default

3-) 再次运行 Spyder

spyder

4-) 启用防火墙

sudo ufw enable

现在可以正常使用了。

【讨论】:

    【解决方案3】:

    在摸索防火墙设置后,我找不到任何可以让 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位)

    【讨论】:

    • 我看到您使用的是 Python 3.3,因此该错误可能是由于端口处理方式相对于 Python 2 的细微差别。如果您的解决方案在一段时间后仍然有效,请打开一个问题在我们的问题跟踪器中,所以我们不要忘记查看它。
    • 很遗憾没有为我工作。现在启动后,spyder 会立即再次关闭
    【解决方案4】:

    我遇到了同样的问题。为它工作了几个月... 来自 Redhat 7 (Scientific Linux) EPEL 库的 spyder。

    最后发现我需要一个未设置为要求的额外包。 python-matplotlib

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 2013-05-01
      • 2017-03-15
      • 2023-03-04
      • 1970-01-01
      • 2015-05-15
      • 2016-11-10
      相关资源
      最近更新 更多