2011-03-18 54 views
2

我嘗試用自定義安裝佈局安裝python模塊。安裝./setup.py安裝的--install-base參數究竟意味着什麼?

從文檔我得知我可以做

python ./setup.py install -f --install-base="/home/hstock/tmp/python" \ 
         --install-purelib=modules \ 
         --install-scripts=bin \ 
         --install-data=data \ 
         --install-platlib=modules \ 
         --install-headers=include 

,這應該安裝模塊來/home/hstock/tmp/python/modules - 但它似乎install-base被忽略,模塊安裝./modules

這是一個錯誤還是我得到的文檔錯誤?

(這是在Ubuntu清醒的Python 2.6.5)

更新:

我想安裝該模塊是自制的,該setup.py很簡單:

#!/usr/bin/env python 

from distutils.core import setup 

setup(
    name='ilogtoolbox', 
    provides=['ilogtoolbox'], 
    version='0.6.3.1', 
    packages=['ilogtoolbox'], 
    requires=['daemon'], 
    scripts=['prunedirs', 'logstoexternal'] 
    ) 
+0

貴問題解決了?如果是這樣,你可以發佈你自己的答案來解決這個問題? – theheadofabroom 2011-10-29 09:44:31

+0

關於這方面的任何消息? FWIW,我在使用Python 2.7.3的Ubuntu 12.04(amd64)上遇到同樣的問題。 – 2012-10-07 10:24:50

回答

0

從查看文檔看起來您已經正確使用了這個模塊 - 模塊是什麼?模塊作者是否可能沒有正確使用distutils?

+0

我自己寫了模塊。我發佈了上面的setup.py。我認爲這是使用distutils的正常方法。 – 2011-03-22 13:08:51

+0

@Hanno你可以包含distutils.cfg文件的內容嗎?這裏有什麼是絕對路徑指定的嗎?一般情況下,看起來是正確的,所以我試圖找到GOTCHAs ... – theheadofabroom 2011-03-22 14:02:29

+0

我同意你的使用只是跟隨文檔說的!你可以在某處發佈整個項目嗎? – 2011-10-28 15:31:43

1

實際上所有這些--install- *參數都接受簡單的字符串模板。看看python的stdlib distutils.command.install code。你會看到默認值就像'$ base/Lib'或'$ base/Scripts'。

因此,對於您的使用情況下,它看起來就像這樣:

python ./setup.py install -f --install-base="/home/hstock/tmp/python" \ 
         --install-purelib='$base/modules' \ 
         --install-scripts='$base/bin' \ 
         --install-data='$base/data' \ 
         --install-platlib='$base/modules' \ 
         --install-headers='$base/include' 

而且,由於--install-lib的實際上是設置兩個purelib和platlib可以縮短一點:

python ./setup.py install -f --install-base="/home/hstock/tmp/python" \ 
         --install-lib='$base/modules' \ 
         --install-scripts='$base/bin' \ 
         --install-data='$base/data' \ 
         --install-headers='$base/include' 
相關問題