./setup.py安装的--install-base参数究竟是什么意思?

时间:2011-03-18 11:09:35

标签: python distutils

我尝试安装带有自定义安装布局的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']
    )

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

从文档看,你看起来已经正确使用了它 - 模块是什么?模块作者是否可能没有正确使用distutils?