2015-04-01 2 views
0

У меня есть инструмент, написанный на Python, который я хотел бы превратить в пакет Python, чтобы упростить установку зависимостей и его распространение.Пакет Python, вызываемый из оболочки?

Есть два обыкновений:

  1. импортировать модуль mytool.py, вызовите функцию-обертку на нем, краткое изложение некоторых измерений выводится на экран, и вы получите словарь с полными результатами. import mytool; results = mytool.mytool(param1=1, param2=2)
  2. Вы вызываете mytool.py из корпуса с такими же параметрами, как указано выше, и сводка измерений печатается на экране. $ python mytool.py --param1 1 --param2 2

Будет ли это правильно? Я понимаю, что когда вы устанавливаете пакет из pypi, основное использование - это одно в пункте 1. После установки вам может быть громоздко найти точный путь до mytool.py и вызвать его из оболочки. Есть ли альтернатива?

ответ

1

Я думаю, что это хорошо, просто убедитесь, что в вашем setup.py вы определяете хороший путь для сохранения сценария играет немного с disutils Lib

from distutils import setup 
setup(
    ..., 
    scripts=['path/to/your/script',], 
    ... 
) 

Некоторые хорошо информацию можно найти здесь https://docs.python.org/2/distutils/index.html#distutils-index

https://docs.python.org/2/distutils/packageindex.html

+0

Я просто прочитал страницу по первой ссылке, и я не понял цели (точнее, эффекта!) Указания пути к скрипту в скриптах = [...]. Что влияет на пользователя? –

+0

disutil имеет специальный способ пакетных скриптов, вызываемых оболочкой, что вам нужно https://docs.python.org/2/distutils/setupscript.html#installing-scripts «Скрипты - это файлы, содержащие исходный код Python, предназначенный для запускаться из командной строки. Скрипты не требуют, чтобы Distutils делал что-то очень сложное ». – lapinkoira

+0

Yup. Так он автоматически устанавливается как команда оболочки, а затем используется как '$ mytool --param1 1 --param2 2'? –