我正在从源代码构建python(版本3.5),以便获得最新版本。我可以make
python并安装它,但包括_sqlite3在内的几个“可选”模块没有安装:
$>./configure --prefix=/my/prefix && make
产生以下结果:
...
Python编译成功!
找不到构建这些可选模块所需的位:
_bz2 _lzma_sqlite3
_ssl _tkinter readline
要找到必要的位,请在setup.py中的detect_modules()中查找模块的名称。
我(沮丧地)从源代码安装了sqlite3,以确保sqlite3开发文件存在于某个地方,我相信我已经根据相关的lzma module install tutorial设置了必要的lib
和include
路径:
$> find / -name libsqlite3.so
/home/username/myproject/lib/libsqlite3.so
$> find / -name sqlite3.h
/home/username/myproject/include/sqlite3.h
$> echo $LD_LIBRARY_PATH
/home/username/myproject/lib
$> echo $LDFLAGS
-L/home/username/myproject/lib
$> echo $CFLAGS
-I/home/username/myproject/include
然而,当我运行./configure --prefix=/my/prefix --enable-loadable-sqlite-extensions && make
时,我得到了上面的错误,_sqlite3
(以及其他)没有安装,因为没有找到必要的位。
基于this related answer,似乎我可能需要更改setup.py
?是这样吗?
真的没有比破解python setup.py
脚本更好的方法了吗?
顺便说一下,我意识到安装sqlite-dev
和yum
可以解决这个问题,并将相关的sqlite3
文件放在python安装的明显位置,但我不确定我能够做到这一点,因为有限的存储库访问。
2条答案
按热度按时间z18hc3ub1#
这个链接为我构建Python 3.5提供了解决方案。特别是Ubuntu,但也帮助CentOS 6解决了这个问题。
Install missing packages before compiling Python3
对于Ubuntu Server 16.04:
wnvonmuf2#
setup.py
脚本不会检查任何环境变量来确定sqlite3.h
文件或任何其他相关文件的位置,因此,除非sqlite3-dev
包安装到“标准”目录中,否则更改环境变量不足以让python找到这些文件。以下sqlite3的
include
目录片段取自setup.py
(适用于Python-3.5.0):由此可见,如果sqlite3没有安装在“标准”系统位置(如/usr或/usr/local),那么将找不到头文件。
要修复此问题,请将
/path/to/my/personal/sqlite/include
添加到上面的sqlite_inc_paths
数组中:和sqlite模块将被发现。
自动安装。要自动执行上述更改,可以使用perl one liner来执行上述更改:
也可以使用
sed
,但-i
就地标志并不适用于所有系统。