--install-base 参数在 ./setup.py install 中到底是什么意思?
我尝试用自定义的安装方式来安装一个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。
这是个bug,还是我理解文档有误呢?
(这是在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
从文档来看,你好像用得没错。请问这个模块是什么?有可能是模块的作者没有正确使用distutils吗?
1
其实,所有这些 --install-* 的参数都可以接受简单的字符串模板。你可以看看 Python 的标准库中 distutils.command.install 的代码。你会发现默认值像是 '$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'