-
Python安装wxPython和ubuntu使用apt提示不能更新
[空两格]昨天憨批室友搁我面前装b,说他会用pip安装Python包了,说是安装wxPython的时候通过换源解决了之前安装出错的问题。我一听,这事不对劲啊,是这个b直接看不懂输出了吧。果然,我让他在虚拟机里给我演示了一下,没想到这个b新换的源是一个国外的源,网速只有几十K???下载了一大会都没下载完,意思没到错误的地方就不算报错呗。然后我又让他换回了清华源,下载完包以后过了几分钟就提示编译出错了。但是吧,他不看编译报错,就直接百度ubuntu安装wxPython,也不想知道每步是干啥的,正好这问题还挺常见的,闲着就写一下。
最开始的就是pip的换源了,网上很多,基本就俩办法,一个是改~/.pip/pip.conf文件,一个是用pip config set index-url命令。然后吧pip其实有两个index-url,一个是index-url,一个是extra-index-url,相当于一个主,一个是备用,具体的东西其实都能用pip install --help看。linux下的命令基本都可以用--help查看帮助,多用--help比百度好使多了,也更方便。得,我把清华源的连接贴一下pip更换源为清华源
改了源以后下载速度是上去了,接下来就是Python包的安装了,Python的包有的是纯python的,有的是需要使用第三方二进制库的(主要是c/c++的库)。
纯Python的话就安装几个Python文件就行,有依赖的话就把依赖的Python文件已安装也就完事了。
主要是涉及到第三方二进制库的时候会麻烦一点点,因为要涉及到一些代码编译,会接触到configure或者cmake,编译的时候因为每个人系统环境不一样,会有一些编译错误。编译的错误基本就两种,一种是二进制库缺少需要的二进制依赖库,就拿这个wxPython来说吧,他在ubuntu下就依赖gtk+3的开发文件,一般你不使用gtk开发图形界面的话你的系统里可能就没有这个开发包。拿configure举例吧,依赖库不存在的出错信息一般就如下所示:
configure: error:
The development files for GTK+ were not found. For GTK+ 2, please ensure that pkg-config is in the path and that gtk+-2.0.pc is installed.
For GTK+ 1.2 please check that gtk-config is in the path, and that the version is 1.2.3 or above.
Also check that the libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config --libs' are in the LD_LIBRARY_PATH or equivalent.
这种带not found的就是configure编译前找不到依赖库gtk+,安装这种依赖库呢,一般就是两种方法
方法1:下载源码,自己编译,不过这对于只用python的人有点麻烦,因为需要涉及到configure , gcc ,主要是一些编译的东西
方法2:直接使用系统的包管理器,就拿常用的ubuntu举例吧,apt-get或者apt 都行,具体这种依赖库在包管理器叫啥名字就得你去百度搜一下了,每个发行版下的包管理中的包名都不太一样,找到包名一个就apt install 包名,一般的情况下linux下的开发包都是带一个-dev后缀的,比如这个libgtk+-3-dev这样。
既然说到apt奥,因为ubuntu官方源实在是太慢了,所以一般都会换成国内源,换apt的源就很简单了,用root权限打开/etc/apt/sources.list这个文件,把里面的https连接换成国内的就行,一般就用清华源或者中科大的源就行。不过因为时间太久,apt的认证可能过期了,这时候就得需要先把sources.list里面的https改成http,然后安装一下ca-certificates这个库,然后再把http改回https,这样就可以开心的继续用国内源的https链接了(安全又卫生),别憨批的再把源换成ubuntu官方的了奥。
依赖解决完以后基本就没啥事了,编译完以后pip会把Python文件和依赖库都放到site-packages下。
然后呢,还有个方法,有时候你也懒得去编译了,懒得去解决这个问题了,毕竟编译也挺费时间的,百度搜来搜去也怪累的,你就直接把别人的python包复制到你系统上python的site-packages里就行了,简单粗暴,也能解决问题。就比如wxPython这个包在Python的site-packages里的名字是wx,里面又个METADATA的文件,里面有一些Requires这种东西,就是这个包的依赖包,把这些东西也复制过去,保证你的包可以安全又卫生的运行(前提是这些依赖你的python没有安装)。
原文:https://www.cnblogs.com/lsyb/p/15605432.html