我正在尝试在具有其他Python安装版本的CentOS 7多用户系统上从源代码构建Python 2.7。我最初是使用gcc 6.3.0和以下标志构建Python 2.7.15:
./configure --prefix=/path/to/install --enable-shared --enable-optimizations
遇到一些构建错误后,我尝试:
./configure --prefix=/path/to/install --enable-shared --enable-optimizations --with-ensurepip --enable-unicode=ucs4
我遇到两个主要错误。首先,我过去只将PYTHONPATH设置为顶级lib目录。例如:PYTHONPATH = / path / to / python / lib / python2.7 有了这个构建,除非我设置PYTHONPATH = / path / to / python / lib / python2.7:/path/to/python/lib/python2.7/lib-dynload,否则python无法在lib-dynload中找到模块 第二个问题是(在将PYTHONPATH设置为包括lib-dynload之后),当我尝试运行pip时,我从 weakref.py中收到以下错误:ImportError:无法导入名称_remove_dead_weakref 我不确定其他哪些模块有错误,但是如果不将其隔离到weakref.py,我不会感到惊讶
我尝试了以下修改:
请不要以不包含源代码构建的解决方案作为回应
更新
我进入了提交历史记录,以查看是否可以找到添加的版本'_remove_dead_weakrefs'。Python 2.7.14是包含此代码的第一个版本,Python 2.7.13没有。
我能够在系统上编译2.7.13,现在可以在python中导入weakref,从而允许我运行pip。另外,我不必将PYTHONPATH指向lib-dynload目录。如果在此版本中发现其他错误,或者发现为什么'_remove_dead_weakref'对于我来说似乎坏了,我将再次更新。
我很好奇为什么会这样。如果有任何Python专家有我的见识,我很乐意