2011-03-18 2 views
2

Я пытаюсь установить модуль python с настраиваемым макетом установки.Что означает параметр -install-base для установки ./setup.py?

Из документации, которую я понял, что я мог бы сделать

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.

Является ли это ошибкой или я неправильно понял документацию?

(Это питон 2.6.5 на Ubuntu Lucid)

Update:

Модуль Я хочу установить само сделано, 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

+0

Есть новости на эту тему? FWIW, у меня такая же проблема на Ubuntu 12.04 (amd64) с Python 2.7.3. –

ответ

0

От взгляда на документацию, похоже, вы использовали это правильно - что такое модуль? Возможно ли, что автор модуля неправильно использовал distutils?

+0

Я сам написал модуль. Я разместил setup.py выше. Я думаю, что это обычный способ использования distutils. –

+0

@ Ханно можете ли вы включить содержимое файла distutils.cfg? Все ли здесь указано абсолютным путем? Как правило, все выглядит правильно, поэтому я пытаюсь найти GOTCHA ... – theheadofabroom

+0

Я согласен с тем, что ваше использование просто следует тому, что говорят документы! Можете ли вы опубликовать весь проект где-нибудь? –

1

На самом деле все эти --install- * arguments принимают простые строковые шаблоны. Посмотрите на stdlib 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' 
Смежные вопросы