Skip to main content
 首页 » 编程设计

python之./setup.py install 的 --install-base 参数到底是什么意思

2025年05月04日11davidwang456

我尝试使用自定义安装布局安装 python 模块。

根据我收集到的文档,我可以做

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 Lucid 上的 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'] 
    ) 

请您参考如下方法:

实际上所有这些 --install-* 参数都接受简单的字符串模板。看看 python 的标准库 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'