Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以告诉lldb使用Python而不是路径上的第一个Python吗?_Python_Xcode_Macos_Xcode4.6_Lldb - Fatal编程技术网

我可以告诉lldb使用Python而不是路径上的第一个Python吗?

我可以告诉lldb使用Python而不是路径上的第一个Python吗?,python,xcode,macos,xcode4.6,lldb,Python,Xcode,Macos,Xcode4.6,Lldb,我正在努力在lldb会话中添加一些Python脚本,但我发现只有当/usr/bin/Python是路径上的第一条Python时,它才起作用。如果在路径上首先找到另一个Python,那么只要lldb初始化其内部Python系统,它就会得到如下异常并终止 Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 54

我正在努力在lldb会话中添加一些Python脚本,但我发现只有当
/usr/bin/Python
是路径上的第一条Python时,它才起作用。如果在路径上首先找到另一个Python,那么只要lldb初始化其内部Python系统,它就会得到如下异常并终止

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 548, in <module>
    main()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 530, in main
    known_paths = addusersitepackages(known_paths)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 266, in addusersitepackages
    user_site = getusersitepackages()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 241, in getusersitepackages
    user_base = getuserbase() # this will also set USER_BASE
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 231, in getuserbase
    USER_BASE = get_config_var('userbase')
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sysconfig.py", line 516, in get_config_var
    return get_config_vars().get(name)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sysconfig.py", line 449, in get_config_vars
    import re
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 105, in <module>
    import sre_compile
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sre_compile.py", line 14, in <module>
    import sre_parse
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sre_parse.py", line 17, in <module>
    from sre_constants import *
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sre_constants.py", line 18, in <module>
    from _sre import MAXREPEAT
ImportError: cannot import name MAXREPEAT
回溯(最近一次呼叫最后一次):
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py”,第548行,在
main()
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py”,主文件第530行
已知路径=addusersitepackages(已知路径)
addusersitepackages中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py”,第266行
user\u site=getusersitepackages()
getusersitepackages中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py”,第241行
user_base=getuserbase()#这也将设置user_base
getuserbase中的文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py”,第231行
USER\u BASE=get\u config\u var('userbase')
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sysconfig.py”,第516行,在get\u config\u var中
返回get_config_vars().get(name)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sysconfig.py”,第449行,在get\u config\u vars中
进口稀土
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py”,第105行,在
导入sre_编译
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sre_compile.py”,第14行,在
导入sre_解析
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sre_parse.py”,第17行,在
从sre_常量导入*
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sre_constants.py”,第18行,在
从_sre导入MAXREPEAT
ImportError:无法导入名称MAXREPEAT
是否有一些lldb设置或命令允许我不使用路径,但仍然让lldb使用
/usr/bin/python


我还可以通过设置
PYTHONHOME=/usr
来解决这个问题,但是由于我正在调试自定义的Python构建和Python扩展,所以我真的不想改变环境。似乎应该有一些方法,比如
settings-set-internal-python/usr/bin/python
,我可以在
~/.lldbinit
中告诉lldb使用什么。

lldb实际上并不太关心python二进制文件本身 然而,它非常关心的是Python.framework,因为调试器是针对Python.framework链接的

不支持从OSX附带的版本更改Python,因为我们使用C API(直接或通过SWIG),并假设某些类/函数/类型将可用(您可以查看源代码以确切了解假设的工作原理)。由于我们也使用SWIG,因此并非Python所需的一切都在我们的直接控制之下(SWIG也有发言权),因此任何Python不是OSX附带的(以及我们测试的)东西的场景都可能工作,也可能不工作


话虽如此,您可能能够“篡改”Python.framework,将其指向其他Python版本。从那以后,您就可以自己动手了。

您可能需要设置路径,以包含站点包和要使用的python版本的各种包含项。。。但是,是的,我确信这是可以做到的(我使用pycharm,一些项目使用kivy及其python版本,而其他项目使用我的常规python安装,但我运行的是win7,所以它可能适用于您,也可能不适用于您)(ps wxPython很棒,我一直在使用它!)是的,我还可以通过设置PYTHONHOME来解决它,但是,由于我正在调试自定义Python构建和Python扩展,我真的不希望改变环境。我将稍微更新一下这个问题……实际上,我正在寻找的是告诉lldb强制自己使用系统Python框架的某种方式,就像它想要做的那样。如果路径中有其他Python,那么它似乎试图使用该Python框架而不是系统框架。如果我更改了路径或设置了PYTHONHOME,那么它会再次做正确的事情,但是如果我从lldb中启动调试过的应用程序,我调试过的进程看到的环境也会发生这些更改。或者您可以使用lldb process launch命令设置/取消设置您认为适合您的环境,不管lldb的环境如何。LLDB提示符下的help process launch具有详细信息W,Xcode将gdb替换为LLDB,不会静态地将其指向唯一可以工作的框架,然后告诉所有用户克服它并修复他们的python.FWIW,这似乎在Yosemite中得到了修复。现在,您可以使用fink的/sw/bin/python,同时成功地运行lldb。