刚发布就拿下了!厉害呀!
这么装不加参数会缺东西的吧,比如sqlite
conda不香吗?
这么装不加参数会缺东西的吧,比如sqlite
是的。编译的时候报了非致命的错误
The necessary bits to build these optional modules were not found:
_bz2 _dbm _gdbm
_lzma _tkinter readline
To find the necessary bits, look in configure.ac and config.log.
对照缺项,把一下依赖安装一下:
sudo apt install libncurses-dev libreadline-dev libsqlite3-dev tk-dev libgdbm-dev liblzma-dev libbz2-dev
libreadline-dev可以避免进入交互之后方向键不可用的问题。安装libsqlite3-dev,sqlite3就能用了。
说句实话linux上的python不能说是“自带电池”~~~
最后总结一下我的安装流程:
sudo apt update
sudo apt upgrade
sudo apt install build-essential gdb lcov pkg-config
libbz2-dev libffi-dev libgdbm-dev libgdbm-compat-dev liblzma-dev
libncurses5-dev libreadline6-dev libsqlite3-dev libssl-dev
lzma lzma-dev tk-dev uuid-dev zlib1g-dev
(上面这些依赖来自python的官方开发指南)
说明:安装一些依赖,不然安装的过程中会出错(例如libncurses-dev),或者避免编译出来的python有问题(例如不装libreadline-dev,安装后,进入交互模式下方向键不可用),或者导致标准库模块不可用(例如不装libsqlite3-dev,安装后python找不到模块sqlite3)
sudo ./configure --prefix=$HOME/python3.12 --enable-optimizations --with-lto --enable-shared --with-dbmliborder=gdbm
说明:
--prefix:指定安装路径,便于日后卸载
--enable-optimizations --with-lto:性能优化选项
--enable-shared:构建共享库,便于其他软件调用python的库
--with-dbmliborder=gdbm:避免make的时候报找不到_dbm(官方github的issue里有讨论)
make -j2
说明:-j2:我的电脑是双核的,所以加参数-j2,提高便于速度
make altinstall
说明:altinstall:安装时不覆盖系统原来的python3指向。
sudo vim /etc/ld.so.conf
说明:将路径 $HOME/python3.12/lib 加入最后一行,使得系统能够找到libpython3.12.so.1.0
ldconfig
说明:是环境变量改变生效
进入源码的doc文件夹
make html
编译文档,在_build/html目录下找到index.html,这个就是离线文档了
是的。编译的时候报了非致命的错误
The necessary bits to build these optional modules were not found:
_bz2 _dbm _gdbm
_lzma _tkinter readline
To find the necessary bits, look in configure.ac and config.log.
对照缺项,把一下依赖安装一下:
sudo apt install libncurses-dev libreadline-dev libsqlite3-dev tk-dev libgdbm-dev liblzma-dev libbz2-dev
libreadline-dev可以避免进入交互之后方向键不可用的问题。安装libsqlite3-dev,sqlite3就能用了。
说句实话linux上的python不能说是“自带电池”~~~
我编译的是python 3.10,应该没有太大差别,deepin 20.9自带的ssl貌似版本不够,你的方法在20.9下可能会不行,需要自己编译一份openssl,在参数里面指定
这是我的编译参数
./configure --prefix=/opt/Python-3.10.12 --enable-optimizations --with-openssl= CC=/usr/bin/clang-15 CXX=/usr/bin/clang++-15 LLVM_PROFDATA=/usr/bin/llvm-profdata-15 CFLAGS="-Wno-unused-value -Wno-empty-body -Qunused-arguments -I/usr/local/include" LDFLAGS="-L/usr/local/lib" --enable-loadable-sqlite-extensions
--enable-loadable-sqlite-extensions
这个参数不加貌似编译也不出错,但用到的时候会出问题
python3.12.0下载地址:https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
(vvv)(deepin内的python是自带的,无法升级,可自行安装)安装python3.12步骤:
下载编译安装
sudo apt -y install wget
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
解压缩到指定python3.12.0安装路径 cd ~/Downloads && sudo tar -xvf Python-3.12.0.tgz -C /usr/local/
切换到解压缩后的文件夹下 cd /usr/local/Python-3.12.0/
#sudo ./configure --prefix=/usr/local/python3.12 --with-openssl=/usr --with-http_ssl_module --enable-optimizations
编译 sudo make
安装 sudo make install或sudo make altinstall 也可合并 sudo make && sudo make install
安装后清理 sudo make clean && sudo apt autoremove
修改环境变量 sudo vim /etc/profile 或 sudo deepin-editor /etc/profile
追加以下内容
export PYTHON3_HOME=/usr/local/python3.12
export PATH=PYTHON3_HOME/bin:PATH 或 export PATH={PYTHON3_HOME}/bin:PATH
配置环境变量立即生效:source /etc/profile
添加新python3软链接指向 sudo ln -snf /usr/local/python3.12/bin/python3 /usr/bin/python3
python3.12.0下载地址:https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
(vvv)(deepin内的python是自带的,无法升级,可自行安装)安装python3.12步骤:
下载编译安装
sudo apt -y install wget
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
解压缩到指定python3.12.0安装路径 cd ~/Downloads && sudo tar -xvf Python-3.12.0.tgz -C /usr/local/
切换到解压缩后的文件夹下 cd /usr/local/Python-3.12.0/
#sudo ./configure --prefix=/usr/local/python3.12 --with-openssl=/usr --with-http_ssl_module --enable-optimizations
编译 sudo make
安装 sudo make install或sudo make altinstall 也可合并 sudo make && sudo make install
安装后清理 sudo make clean && sudo apt autoremove
修改环境变量 sudo vim /etc/profile 或 sudo deepin-editor /etc/profile
追加以下内容
export PYTHON3_HOME=/usr/local/python3.12
export PATH=PYTHON3_HOME/bin:PATH 或 export PATH={PYTHON3_HOME}/bin:PATH
配置环境变量立即生效:source /etc/profile
添加新python3软链接指向 sudo ln -snf /usr/local/python3.12/bin/python3 /usr/bin/python3
这样能过,但是有些模块是缺的
以上的内容也是我关心的,楼主做的不错。希望论坛出一个deepin系统安装python3.12等的完美版指引。
最后运行有问题吗?--enable-shared就会有找不到libpython3.12.so.1.0。但是没有--enable-shared,则用pyinstaller打包成功。
你这个流程我比较了各种版本的安装,你这个不错。希望能出一个图文版的。
python3.12.0下载地址:https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
(vvv)(deepin内的python是自带的,无法升级,可自行安装)安装python3.12步骤:
下载编译安装
sudo apt -y install wget
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
解压缩到指定python3.12.0安装路径 cd ~/Downloads && sudo tar -xvf Python-3.12.0.tgz -C /usr/local/
切换到解压缩后的文件夹下 cd /usr/local/Python-3.12.0/
#sudo ./configure --prefix=/usr/local/python3.12 --with-openssl=/usr --with-http_ssl_module --enable-optimizations
编译 sudo make
安装 sudo make install或sudo make altinstall 也可合并 sudo make && sudo make install
安装后清理 sudo make clean && sudo apt autoremove
修改环境变量 sudo vim /etc/profile 或 sudo deepin-editor /etc/profile
追加以下内容
export PYTHON3_HOME=/usr/local/python3.12
export PATH=PYTHON3_HOME/bin:PATH 或 export PATH={PYTHON3_HOME}/bin:PATH
配置环境变量立即生效:source /etc/profile
添加新python3软链接指向 sudo ln -snf /usr/local/python3.12/bin/python3 /usr/bin/python3
这个安装完毕后,如果使用pyinstaller,会提示建议重新编译,要有这个--enable-shared
Popular Ranking
ChangePopular Events
More
系统信息:Linux liuxia-PC 6.1.32-amd64-desktop-hwe #23.01.00.20 SMP PREEMPT_DYNAMIC Mon Sep 11 14:16:03 CST 2023 x86_64 GNU/Linux
最近,python3.12,下载来看看,过程中踩了一些坑,这里留个笔记,希望能对大家有用。
建议安装的时候指定安装目录。之前编译安装3.11的时候,使用默认设置(/usr/local),现在装3.12的时候想卸载3.11,发现安装文件和其他的应用混在一起,不太好清除。指定安装目录后,下次装3.13的时候,卸载老版本可以直接删除安装目录,调整/usr/local/bin下的python3、pip3的软链接的指向就行了。
过程:
./configure --prefix=$HOME/python3.12
make
make altinstall
使用altinstall,不会修改系统内的python3指向,默认指向安装的版本。
安装后有一个问题,就是进到交互模式后,方向键、退格键不能用:
然后安装gnureadline,安装过程中又报错:
网上检索错误信息,得知ncurses是一套编程库,-lncurses参数是链接这个库,估计是缺依赖了
于是
apt search libncurses
搜索一下
发现有几个版本,试试不带5的那个吧~
sudo apt install libncurses
安装成功。再安装gnureadline也成功,然后进python3.12的交互模式也正常了
另外:如果安装时候如果开启了共享
安装完成后需要将$HOME/python3.12/lib加入到环境变量文件/etc/ld.so.conf的最后一行,并执行ldconfig,不然启动python的时候会提示libpython3.12.so.1.0找不到的错误(网上说的将HOME/python3.12/lib/libpython3.12.so.1.0复制到/usr/lib目录下貌似行不通)。