我正在尝试构建 python3 的本地版本(特别是 python3.7,但与 3.6.6 相同的问题),但是在链接到一些 C 库和/或头文件时遇到了问题(至少这是我认为的问题是)。
我能够构建 python3.7,但遇到 bzip2 的问题(但我怀疑会有其他系统库我遗漏了一个不知道的)。这在尝试导入需要它作为导入错误的各种包/模块时表现出来:
ModuleNotFoundError: No module named '_bz2'
从这个 stackoverflow 问题 - Ask Question - 看来我已经构建了没有正确 bz2 标头的 python。python 构建本身不会失败。
具体问题是如何用bz2构建本地版本的python?更一般地说,问题是如何正确链接到系统库?(因为可能还有其他我没有遇到错误)
就我所尝试的而言 - 我发现了这个(旧的)问题 - 你如何将 bz2 分配给 python 的 altinstall?还有这个最近的问题Compiling bz2 support in python2并尝试了一些基于这些的东西。
我遇到的第一个问题实际上是找到要链接的正确库等(上述问题中的解决方案建议设置CFLAGS="-I/path/to/bz2/include"
and LDFLAGS="-L/path/to/bz2/lib"
)。大概这些在我系统的某个地方(ubuntu 16.04),因为python2.7和python3.5的系统安装对bzip2没有问题。
我发现libbz2.so.1
(以及其他一些)/lib/x86_64-linux-gnu/
-但文件夹似乎没有遵循上面示例/答案的模式。因此,我构建了 bz2 的新本地版本(.bzp
在我的本地文件夹中),然后在尝试构建 python3.7 时尝试链接到该版本,使用以下命令:
./configure --prefix=/home/user/.localpython CFLAGS="-I/home/user/.bz2/include" LDFLAGS="-L/home/user/.bz2/lib"
我还尝试了一个更通用的配置(它松散地基于Compile Python with bz2 support,链接到上面的第二篇文章。)
./configure --prefix=/home/user/.python CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
(这两个都不成功)
非常感谢任何指针、提示等 - 在此先感谢!