gpt4 book ai didi

python-3.x - 如何使用 _bz2、_sqlite 和 _ssl 从源代码构建 python 3.3.2

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:12 26 4
gpt4 key购买 nike

我想在我的 SLE 11 (OpenSUSE) 上从头开始构建 Python 3.3.2。

在 Python 的编译过程中,我得到了模块 _bz2_sqlite_ssl 尚未编译的消息。

我通过各种搜索引擎寻找解决方案。人们常说您必须使用包管理系统安装 -dev 包,但我没有根访问权限。

我下载了缺少的库的源码包,但我不知道如何告诉 Python 使用这些库。有人可以帮助我吗?

最佳答案

简短的回答是你从源代码配置这些包并将它们放在你的主目录中的某个地方,比如,./configure --prefix=$HOME/opt

路径 $HOME/.local 也可能是一个不错的选择,因为许多发行版似乎在用户的 $HOME/.local/bin 中包含 code>$PATH 已经存在(这是 pip install --user 在 Linux 平台上默认放置可执行文件的地方)。

然后,您通过将额外的标志传递给编译器和链接器,告诉 Python 构建过程使用该位置中的库。我将使用 SQLite 的示例,作为 _sqlite3 扩展,因为那是我今天必须做的,所以我知道这是可行的:

# build and install SQLite from the autoconf version of the "amalgamated"
# source, available at https://www.sqlite.org/download.html
cd /path/to/sqlite-source
./configure --prefix=$HOME/opt
make -j8 # 8 parallel tasks
make install

# tell the C/C++ preprocessor to also look for headers in $HOME/opt/include
export CPPFLAGS="-I$HOME/opt/include"

# tell the linker to write $HOME/opt/lib into the runtime path of any binaries
# it creates; also tell it to look for extra libraries in $HOME/opt/lib
export LDFLAGS="-Wl,-rpath=$HOME/opt/lib -Wl,-rpath=$HOME/opt/lib64 \
-L$HOME/opt/lib -L$HOME/opt/lib64"

# tell the compiler to optimize at level 3 (optional)
export CFLAGS="-O3"

# tell Python to build into your home directory; CFLAGS, CPPFLAGS, and
# LDFLAGS are automatically picked up from the environment
cd /path/to/python-source
./configure --prefix=$HOME/opt --enable-shared --enable-optimizations
make -j8 && make install

# add $HOME/opt/bin to your $PATH
cp -i ~/.bash_profile ~/.bash_profile-$(date +%Y%m%d)
echo -e '
# add homebrew software in $HOME/opt to $PATH
export PATH="$HOME/opt/bin:$PATH"' >> ~/.bash_profile

如果你像我上面那样提前定义它们,构建相关的环境变量(CFLAGS, et al.)必须是export 如果您希望 configure 接收它们。

您需要注销并重新登录才能使对 $PATH 的更改生效。您还可以修改 ~/.bashrc 中的 $PATH,但这样做也有缺点。 (实际上,两者都有缺点,但这是另一个话题。)

更多详细信息请参阅 this SO answer .

关于python-3.x - 如何使用 _bz2、_sqlite 和 _ssl 从源代码构建 python 3.3.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17546628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com