2009-05-17 6 views
30

как я могу сделать файл setup.py для моего собственного скрипта? Я должен сделать свой сценарий глобальным. (добавьте его в/usr/bin), чтобы я мог запустить его из консоли, просто введите аргументы scriptName. ОС: Linux. EDIT: Теперь мой сценарий можно установить, но как я могу сделать его глобальным? Чтобы я мог запускать его из консоли, просто введите имя.Python - установить скрипт в систему

ответ

35

EDIT: Этот ответ касается только установки исполняемых скриптов в /usr/bin. Я предполагаю, что у вас есть базовые знания о том, как работают файлы setup.py.

Создайте свой скрипт и поместить его в свой проект, как это:

yourprojectdir/ 
    setup.py 
    scripts/ 
     myscript.sh 

В файле setup.py это сделать:

from setuptools import setup 
# you may need setuptools instead of distutils 

setup(
    # basic stuff here 
    scripts = [ 
     'scripts/myscript.sh' 
    ] 
) 

Затем введите

python setup.py install 

В принципе это все. Есть вероятность, что ваш скрипт будет находиться не совсем в /usr/bin, но в другом каталоге. Если это так, то тип

python setup.py install --help 

и поиск --install-scripts параметра и друзей.

+0

Хорошо, я сделал, что вы написали. Но после запуска: setup.py install i got:
error: file '/home/ockonal/workspace/scripts/getkey.py' не существует – Ockonal

+0

Хорошо, я уже установил мой сценарий, но как я могу сделать это глобальное? Я не могу запустить его из консоли, просто набрав имя. – Ockonal

+0

Где именно был установлен скрипт? Если он находится в/usr/bin, то setup.py работает нормально. Проверьте разрешения вашего сценария - у него должны быть разрешения + x для всех. Скрипт в вашем проекте должен иметь эти persmissions, так что когда он будет скопирован в/usr/bin, все будет в порядке. – Jasiu

1

Я знаю, что этот вопрос довольно старый, но на всякий случай, я публикую, как я решил проблему для себя, которая хотела установить пакет для PyPI, который при установке с pip установил бы его как системный пакет, а не только для Python.

setup(
    # rest of setup 
    console_scripts={ 
     'console_scripts': [ 
      '<app> = <package>.<app>:main' 
     ] 
    }, 
) 

Details

 Смежные вопросы

  • Нет связанных вопросов^_^