我想在我的sle 11(opensuse)上从零开始构建python 3.3.2。在python的编译过程中,我收到的消息是模块_bz2,_sqlite和_ssl尚未编译。我寻找各种搜索引擎的解决方案。通常说您必须使用您的包管理系统安装dev-packages,但我没有root访问权限。我下载了缺少库的源包,但我不知道如何告诉python使用这些库。有人可以帮帮我吗?
答案 0 :(得分:0)
我不使用那个发行版,而是使用Linux Mint(它基于Ubuntu)。
在编译Python 3.3.2之前,我已经安装了必要的-dev库: $ sudo apt-get install libssl-dev $ sudo apt-get install libbz2-dev ...
然后我编译并安装了Python,这些导入工作正常。
希望你觉得它很有用
莱昂
答案 1 :(得分:0)
最简单的答案是您从源代码配置这些程序包,并将它们放在主目录中的某个位置,例如./configure --prefix=$HOME/opt
。
然后,通过将额外的标志传递给编译器和链接器,告诉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
,等)必须在export
中输入configure
来接他们。
您需要先注销然后重新登录,以使对$PATH
的更改生效。您也可以在$PATH
中修改~/.bashrc
,但这有缺点。 (实际上,两者都有缺点,但这是另一个主题。)
this SO answer中提供了更多详细信息。