当尝试运行python脚本时,我得到错误AttributeError: 'module' object has no attribute 'pydebug'
。我正在使用Python2.6。
完全错误:
File "/lib/python2.6/distutils/sysconfig.py", line 238, in get_makefile_filename
return os.path.join(lib_dir, "config" + (sys.pydebug and "_d" or ""), "Makefile")
AttributeError: 'module' object has no attribute 'pydebug'
当我在一个Ubuntu系统上运行
gdb
时收到这个错误,在这个Ubuntu系统上已经安装了Python的另一个版本,并且链接器首选它。您可以通过使用ldd
询问哪些库gdb
正在使用,来验证这种情况是否发生:您可以看到,运行在
/usr/local/lib
中的非品牌版本的Python正在为libpython
提供gdb
而不是/usr/lib
中的官方Ubuntu Python,这是导致错误的原因-无论/usr/local
中的非品牌Python的编译方式与Ubuntu Python的编译方式不同,因此,对gdb
的期望是令人失望的。解决方案是使用环境来控制链接器的行为,并使其更喜欢系统
libpython
。为了更好地衡量,我还将PATH
重置为完全标准的值。我发现这有效:当我试图在我自己构建的python上运行Ubuntu 12.04.1系统gdb时遇到了这个问题。我希望Ubuntu已经在gdb系统中构建了一些钩子,这样它就使用了Python的调试版本;但是钩子并没有锁定到我自己Python中的任何东西。我通过建立自己的gdb并运行它来解决这个问题。
下面是命令行和完整的回溯:
所以它似乎在寻找错误的python(在
/usr/lib
中),尽管我已经告诉系统不要这样做:我认为无论您尝试运行什么,都希望与python的特殊调试构建一起使用。
sys.pydebug
通常在sys模块的标准版本中找不到,我相信如果您构建了一个调试python,它就会出现:http://docs.python.org/c-api/intro.html#debugging-builds
这也可能是Debian/Ubuntu发行版正在使用的特定构建的一部分。
相关问题 更多 >
编程相关推荐