【发布时间】:2011-09-04 11:59:39
【问题描述】:
我有另一个线程寻求有关“缺少 zlib”的帮助。在很好的帮助下,问题已经(几乎)解决了。
现在我有兴趣自己构建 Python(在 Ubuntu 10.10 上)。
几个重要的问题引起了我的注意:
构建 Python(比如 2.7.1)后,如果缺少模块,是否需要重新构建 Python?
有没有办法在构建 Python 之前找出哪些模块会丢失?说sqlite3。我为系统默认(Python 2.6.6)安装了 sqlite3,我可以将其导入 Python 2.6.6 shell。现在我使用 pythonbrew 构建 2.7.1,在 shell 中我无法导入 sqlite3,因为 _sqlite3 不可用。我确信还有一些更重要的缺失是我未来开发所需要的(例如 Django ..)。
我愿意学习如何在不使用pythonbrew 的情况下进行构建。
请与我分享您构建另一个版本的 Python 的经验,您将如何解决缺少模块的问题?是否有构建 Python 的实用解决方案?
我从来没有费心自己建造一个,所以请多多包涵。我开始意识到自己学习和建立自己的重要性!非常感谢!
编辑
首先,我感谢您的所有意见。他们意义重大。我做了建筑。
Python build finished, but the necessary bits to build these modules were not found:
_bsddb _curses _curses_panel
_tkinter bsddb185 bz2
dbm gdbm readline
sunaudiodev _sqlite3
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
我得到了 sqlite3 和 readline 离开了
sudo apt-get install libreadline6 libreadline6-dev
sudo apt-get install libsqlite3-dev
我尝试导入它们,但仍然“没有命名模块 xxxx”。
在AskUbuntu,我实际上询问了人们如何获取以前的命令,因为当我在 Python 2.7.1 shell 中时无法使用该功能。我相信这是由于readline。 Readline
我在这个目录下安装了Python-2.7.1:/home/jwxie518/python27/
我查看了 setup.py,发现了以下几行:
# The sqlite interface
sqlite_setup_debug = False # verbose debug prints from this script?
# We hunt for #define SQLITE_VERSION "n.n.n"
# We need to find >= sqlite version 3.0.8
sqlite_incdir = sqlite_libdir = None
sqlite_inc_paths = [ '/usr/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
'/usr/local/include/sqlite3',
]
上面列出的所有路径都不存在。 所以我想我必须手动安装 sqlite3?我得到了另一个参考here(不过是中文的)
# Download the latest and extract
# Go into the extracted directory
./configure --prefix=/home/jwxie518/python27/python
make && make install
# Then edit python-2.7 's setup.py before rebuild it
# Sample (add these two lines to the end....)
'~/share/software/python/sqlite-3.6.20/include',
'~/share/software/python/sqlite-3.6.20/include/sqlite3',
# Then rebuild python like how we did before
我进入了安装 sqlite3 的目录。我只找到了 include/sqlite3.h。所以我回去检查/usr/include/。我也只能找到 sqlite3.h。
那么这里发生了什么? Readline 也是不可导入的。
第三次编辑 我重新开始一切,除了我没有重新安装 sqlite3。
# Extract Python-2.7.1
# cd into Python-2.7.1
# ./configure
make >make.out 2>&1
less make.out
make.out 在这里:http://pastebin.com/raw.php?i=7k3BfxZQ
我仍然无法导入 sqlite3。所以我进入 setup.py 并进行了更改:
# We hunt for #define SQLITE_VERSION "n.n.n"
# We need to find >= sqlite version 3.0.8
sqlite_incdir = sqlite_libdir = None
sqlite_inc_paths = [ '/usr/include',
'/usr/include/sqlite',
'/usr/include/sqlite3',
'/usr/local/include',
'/usr/local/include/sqlite',
'/usr/local/include/sqlite3',
'/home/jwxie518/python-mod/include/sqlite',
'/home/jwxie518/python-mod/include/sqlite3',
]
再一次,把所有东西都跑一遍(这次我也做了 make clean)
输出在这里:http://pastebin.com/raw.php?i=8ZKgAcWn
根据输出,我认为没有包含自定义路径....(完整输出请到上面的链接搜索sqlite)
build/temp.linux-i686-2.7/home/jwxie518/Python-2.7.1/Modules/_sqlite/util.o -L/usr/lib -L/usr/local/lib -Wl,-R/usr/lib -lsqlite3 -o build/lib.linux-i686-2.7/_sqlite3.so
我仍然无法导入 sqlite3。
谢谢!
非常感谢 Michael Dillon 帮助我。您的教程简洁明了。
当我意识到每当我尝试 Python-2.7.1 时,我就解决了这个问题,我实际上使用的是 Pythonbrew 安装的那个。
故事的寓意是阅读所有错误。我忽略了导入 sqlite3 产生的错误。 Pythonbrew 安装的那个没有安装 sqlite3。在 Pythonbrew 安装 Python-2.7.1 之后安装 sqlite3 的开发包
>谢谢。
【问题讨论】: