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