正确构建本地 python3,支持 bz2
Correctly building local python3, with bz2 support
我正在尝试构建 python3 的本地版本(特别是 python3.7,但与 3.6.6 存在相同的问题),但 运行 遇到 linking 到某些 C 库 and/or headers(至少我认为这是问题所在)。
我能够构建 python3.7,但是 运行 遇到了 bzip2 的问题(但我怀疑会有其他系统库是我遗漏或不知道的)。这在尝试导入各种需要它作为导入错误的 packages/modules 时表现出来:
ModuleNotFoundError: No module named '_bz2'
从这个 Whosebug 问题 - Ask Question - 看来我构建的 python 没有正确的 bz2 headers。 python 构建本身不会失败。
具体问题是如何用bz2搭建本地版本的python?更一般地说,问题是如何正确地 link 到系统库? (因为可能还有其他我没有遇到错误)
就我的尝试而言 - 我发现了这个(陈旧的)问题 -
How do you assign bz2 to an altinstall of python? and this more recent question 并根据这些尝试了一些东西。
我 运行 遇到的第一个问题实际上是找到 link 的正确库等(上述问题的解决方案建议设置 CFLAGS="-I/path/to/bz2/include"
和 LDFLAGS="-L/path/to/bz2/lib"
)。大概这些在我系统的某个地方(ubuntu 16.04),因为 python2.7 和 python3.5 的系统安装与 bzip2 没有问题。
我找到了 libbz2.so.1
(以及其他一些)/lib/x86_64-linux-gnu/
- 但文件夹似乎没有遵循上面 example/answer 的模式。因此,我构建了一个新的本地版本的 bz2(在我本地文件夹的 .bzp
中),然后在我尝试构建 python3.7 时尝试 linking 到那个,使用以下:
./configure --prefix=/home/user/.localpython CFLAGS="-I/home/user/.bz2/include" LDFLAGS="-L/home/user/.bz2/lib"
我还尝试了一个更通用的配置(它松散地基于 Compile Python with bz2 support,link 在上面的第二篇文章中提到。)
./configure --prefix=/home/user/.python CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
(均未成功)
非常感谢任何指点、提示等 - 提前致谢!
默认情况下,Ubuntu 在编译 Python 时不会安装包含 bz2 支持(或任何其他此类库支持)所需的文件。您需要为库添加 development headers 包。
bz2
Ubuntu 支持,即 libbz2-dev
package。您需要为其他功能安装更多此类软件包。
包将 headers 放在一个标准位置,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 GUI 库,tk-dev
和 blt-dev
。
我正在尝试构建 python3 的本地版本(特别是 python3.7,但与 3.6.6 存在相同的问题),但 运行 遇到 linking 到某些 C 库 and/or headers(至少我认为这是问题所在)。
我能够构建 python3.7,但是 运行 遇到了 bzip2 的问题(但我怀疑会有其他系统库是我遗漏或不知道的)。这在尝试导入各种需要它作为导入错误的 packages/modules 时表现出来:
ModuleNotFoundError: No module named '_bz2'
从这个 Whosebug 问题 - Ask Question - 看来我构建的 python 没有正确的 bz2 headers。 python 构建本身不会失败。
具体问题是如何用bz2搭建本地版本的python?更一般地说,问题是如何正确地 link 到系统库? (因为可能还有其他我没有遇到错误)
就我的尝试而言 - 我发现了这个(陈旧的)问题 -
How do you assign bz2 to an altinstall of python? and this more recent question
我 运行 遇到的第一个问题实际上是找到 link 的正确库等(上述问题的解决方案建议设置 CFLAGS="-I/path/to/bz2/include"
和 LDFLAGS="-L/path/to/bz2/lib"
)。大概这些在我系统的某个地方(ubuntu 16.04),因为 python2.7 和 python3.5 的系统安装与 bzip2 没有问题。
我找到了 libbz2.so.1
(以及其他一些)/lib/x86_64-linux-gnu/
- 但文件夹似乎没有遵循上面 example/answer 的模式。因此,我构建了一个新的本地版本的 bz2(在我本地文件夹的 .bzp
中),然后在我尝试构建 python3.7 时尝试 linking 到那个,使用以下:
./configure --prefix=/home/user/.localpython CFLAGS="-I/home/user/.bz2/include" LDFLAGS="-L/home/user/.bz2/lib"
我还尝试了一个更通用的配置(它松散地基于 Compile Python with bz2 support,link 在上面的第二篇文章中提到。)
./configure --prefix=/home/user/.python CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
(均未成功)
非常感谢任何指点、提示等 - 提前致谢!
Ubuntu 在编译 Python 时不会安装包含 bz2 支持(或任何其他此类库支持)所需的文件。您需要为库添加 development headers 包。
bz2
Ubuntu 支持,即 libbz2-dev
package。您需要为其他功能安装更多此类软件包。
包将 headers 放在一个标准位置,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 GUI 库,tk-dev
和 blt-dev
。