Сделать проект Python в инструмент командной строки - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть проект на Python с несколькими файлами и cmd.py, который использует argparse для разбора аргументов, в других файлах есть критические функции.То, что я хочу сделать, это: я хочу сделать так, чтобы, если в командной строке я должен был поставить cmd -p hello.txt, он запустил этот файл python.

Я думал, что могу просто переместить файл cmd.py куда-нибудь, например, /usr/bin/ или в какой-либо другой каталог, включенный в $PATH, однако, поскольку у меня есть другие файлы, которые работают с моим cmd.py, в моем /usr/bin.

будет несколько файлов. Еще одна вещь, которую я мог бы сделать, - создать символическую связь между cmd.py и /usr/bin/cmd следующим образом: ln -s /path/to/cmd.py /usr/bin/cmd, но тогда гдея положил cmd.py?и это лучшая практика?

Примечание: я намерен, чтобы это работало на Linux и MacOS X, а не на Windows

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019
  1. Вы можете добавить папку к своему пути.
    • в .bashrc добавить следующее
    • export PATH = [New_Folder_Path]: $ PATH
  2. поместить программу python в вашу папку path_folder, созданную на шаге 1.
  3. сделать его исполняемым: chmod u + x [имя файла]
  4. открыть новый терминал, и вы сможете вызывать программу python
  5. ПРИМЕЧАНИЕ: обязательно установитеШебанг в вашем python-файле: #! / usr / bin / env python3
0 голосов
/ 14 февраля 2019

Обычный способ сделать это - определить набор точек входа в setup.py и позволить инфраструктуре упаковки сделать тяжелую работу за вас.

setup(
    # ...
    entry_points = {
        'console_scripts': ['cmd = cmd:main'],
    }
)

Для этого требуется setuptools.

Вот некоторая документация для этого средства: https://python -packaging.readthedocs.io / en / latest / command-line-scripts.html

0 голосов
/ 14 февраля 2019

Во-первых, я не рекомендую устанавливать в /usr/bin, потому что именно туда идут системные программы./usr/local/bin или другой пользовательский каталог, добавленный к $PATH, может быть подходящим.

Что касается того, чтобы он работал как обычная программа, назовите его cmd, куда бы вы его ни поместили, так как расширение не нужнои добавьте эту строку в начало программы:

#!/usr/bin/env python

(Вы можете указать python3 вместо просто python, если хотите убедиться, что Python 3.x используется.)

Тогда его можно сделать исполняемым с помощью chmod +x <path to your program>.Убедитесь, что у вас есть необходимые привилегии для этого (т. Е. Может потребоваться sudo).

...