2010-09-28 62 views
13

我試圖編譯的Python 2.7在Ubuntu 10.4,但得到了跑make後出現以下錯誤信息:Ubuntu的軟件包需要編譯的Python 2.7

Python build finished, but the necessary bits to build these modules were not found: 
_bsddb    bsddb185   sunaudiodev  
To find the necessary bits, look in setup.py in detect_modules() for the module's name. 

我需要什麼樣的包? (setup.py無幫助)

+1

我會嘗試進入Synaptic並搜索Python並下載所有開發工具包等。 – Scott 2010-09-28 13:18:44

+2

我認爲這對unix.se,ubuntu.se,超級用戶或serverfault會更好。 – Chris 2010-09-28 13:44:00

回答

6

sudo apt-get build-dep python2.6 python-gdbm python-bsddb3(在特立獨行上使用python2.7)。

欲瞭解更多信息,請參閱this answer。也請看this page,它同樣適用於建立在Lucid上。

+0

在我的系統上找不到包「build-dep」。 – deamon 2010-09-28 13:41:32

+0

這是一個錯誤,我前段時間修復了它。 – 2010-10-05 05:14:11

5

那些較舊的(大多數折舊)模塊可能不會使用。您應該能夠安全地忽略警告。

你可能想要解決的問題是_bsddb,安裝Berkeley DB 4.8後應該消失......我不確定它是否在Ubuntu回購站。 (編輯:顯然它是db package

bsddb185是Oracle Berkley數據庫模塊的舊版本。就我所知,你可以放心地忽略它。

sunaudiodev已貶值,無證,我懷疑你永遠不需要使用它。你應該能夠安全地忽略它。

希望幫助一點,反正...

+2

我在Linux上忽略的列表是_tkinter,bsddb185,dl,imageop,sunaudiodev – 2011-06-17 18:44:47

15

假設你已經安裝了所有的依賴關係(在Ubuntu上,這將是一堆東西,喜歡sudo apt-get install libdb4.8-dev和其他各種-dev包,然後我這是怎麼建。Python的

tar zxvf Python-2.7.1.tgz 
cd Python-2.7.1 

# 64 bit self-contained build in /opt 
export TARG=/opt/python272 
export CC="gcc -m64" 
export LDFLAGS='-Wl,-rpath,\$${ORIGIN}/../lib -Wl,-rpath-link,\$${ORIGIN}/../lib -Wl,--enable-new-dtags' 
./configure --prefix=$TARG --with-dbmliborder=bdb:gdbm --enable-shared --enable-ipv6 
make 
make install 

,使期間不建立唯一的模塊是:

_tkinter - I don't do GUI apps and would use wxWindows if I did 
bsddb185 - horribly obsolete version of bdb 
dl - deprecated in 2.6    
imageop - deprecated in 2.6 
sunaudiodev - obsolete interface to some SparcStation device I think 

接下來我收集的已經不是任何.so文件在Python安裝目錄,將其複製過來:

# collect binary libraries ##REDO THIS IF YOU ADD ANY ADDITIONAL MODULES## 
cd /opt/python272 
find . -name '*.so' | sed 's/^/ldd -v /' >elffiles 
echo "ldd -v bin/python" >>elffiles 
chmod +x elffiles 
./elffiles | sed 's/.*=> //;s/ .*//;/:$/d;s/^    *//' | sort -u | sed 's/.*/cp -L & lib/' >lddinfo 
# mkdir lib 
chmod +x lddinfo 
./lddinfo 

,然後添加setuptools的好措施

#set the path 
export PATH=/opt/python272/bin:$PATH 

#install setuptools 
./setuptools-0.6c11-py2.7.egg 

在這一點上我可以做的/ opt/python272的壓縮包並運行它在任何64位的Linux發行版,甚至是一個沒有安裝依賴關係的發行版,或者是一個具有舊版過時版本依賴關係的舊發行版。

我也得到了pip安裝,但在這一點上我的筆記有一個缺口,由於一些失敗的virtualenv鬥爭。基本上,virtualenv不支持這種情況。大概我做easy_install pip然後:

export LD_RUN_PATH=\$${ORIGIN}/../lib 
pip install cython 
pip install {a whole bunch of other libraries that I expect to use} 

我完成了安裝模塊後,我回去重新運行該命令來收集.so文件,並進行了新的壓縮包。有幾個軟件包我不得不使用LDFLAGS以使它們正確安裝,並且我還沒有做足夠深入的測試,但到目前爲止它工作正常,而且我正在使用此Python版本來運行生產應用程序沒有預安裝所有支持庫的機器。

+0

偉大的一點,就是因爲在構建模塊時找不到模塊,並不意味着您需要它。 – 2013-11-23 14:35:58

相關問題