我正在尝试构建一个本地版本的python3 (特别是python3.7,但3.6.6也有同样的问题),但在链接到一些C库和/或头文件时遇到了问题(至少我认为问题是这样的)。
我能够构建python3.7,但是在使用bzip2时遇到了问题(但我怀疑还会有其他的系统库,我没有意识到)。当尝试导入各种需要它作为导入错误的包/模块时,就会出现这种情况:
ModuleNotFoundError: No module named '_bz2'从这个堆栈溢出问题- Ask Question -看起来我已经构建了没有正确的bz2头文件的python。python构建本身不会失败。
具体的问题是如何使用bz2构建python的本地版本?更广泛地说,问题是如何正确地链接到系统库?(因为可能还有其他我没有遇到过的错误)
就我所尝试的而言-我找到了这个(旧的)问题- How do you assign bz2 to an altinstall of python?和最近的这个问题Compiling bz2 support in python2,并尝试了一些基于这些的东西。
我遇到的第一个问题实际上是找到正确的库等链接(上面问题中的解决方案建议设置CFLAGS="-I/path/to/bz2/include"和LDFLAGS="-L/path/to/bz2/lib")。这些大概就在我的系统上的某个地方(ubuntu16.04),因为系统安装的python2.7和python3.5在bzip2上没有问题。
我在/lib/x86_64-linux-gnu/中找到了libbz2.so.1 (和其他一些文件夹)--但是文件夹似乎不遵循上面示例/答案的模式。因此,我构建了一个新的本地版本的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"(这两次都没有成功)
任何指点,建议等非常感谢-提前感谢!
发布于 2018-07-08 00:31:16
默认情况下,Ubuntu在编译Python时不会安装包含bz2支持(或任何其他类库支持)所需的文件。您需要为库添加开发头程序包。
对于Ubuntu上的bz2支持,这就是libbz2-dev package。您需要安装更多这样的包才能实现其他功能。
包将头文件放在一个标准位置,这是Python configure脚本知道要找到的位置。您不需要额外的标志。
从Python 3.6 build dependencies on Ubuntu 17.10推断,您还需要:
libbluetooth-dev
libbz2-dev
libdb-dev
libexpat1-dev
libffi-dev
libgdbm-dev
liblzma-dev
libmpdec-dev
libncursesw5-dev
libreadline-dev
libsqlite3-dev
libssl-dev
zlib1g-dev如果你想支持Tk库,tk-dev和blt-dev。
https://stackoverflow.com/questions/51149227
复制相似问题