Установил свой пакет с пипом. Как мне его запустить? - PullRequest
0 голосов
/ 12 ноября 2018

Итак, я делаю проект, в котором мне нужно создать устанавливаемый пакет Python, установить его на рабочий стол (ОС Windows) и запустить приложение, содержащееся в папке. После упаковки и установки кода я получаю 2 папки в пути, куда установлен pip:

project_pkg
project_pkg-0.0.1.dist-info

В папке project_pkg у меня есть 1 папка и 2 файла:

__pycache__
__init__.py
project.py

Что я хочу сделать, это запустить project.py через cmd. Как мне это сделать? Файл init .py содержит только это:

name = 'project'

UPDATE

После прочтения ответа @Patrick Allen я разобрался со всем. Теперь я могу запустить приложение, просто набрав project [args]. Когда я делаю это, запуск выполняется так, как ожидалось, и вывод правильный, но когда он собирается закончиться, я получаю странную ошибку:

Traceback (most recent call last):
File "c:\...\appdata\local\programs\python\python37- 
32\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\...\appdata\local\programs\python\python37 
-32\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\...\AppData\Local\Programs\Python\Python37- 
32\Scripts\project.exe\__main__.py", line 9, in <module>
TypeError: 'module' object is not callable

Дело в том, что я не использую __main__.py, плюс, когда я пытаюсь найти файл, указанный в последнем пути, я ничего не могу найти. Есть идеи?

ОБНОВЛЕНИЕ 2

Я подумал о временном решении, которое использует команду sys.exit(), когда приложение завершит работу. Я не знаю, правильно ли это, но у меня работает.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Если вы используете setup.py упаковку, вам нужно установить конфигурацию entry_points.

Посмотрите пример репо Кеннета Рейтца. Он закомментировал это, но просто раскомментируйте и преобразуйте, чтобы применить к вашему проекту.

Пример упаковки Repo

Если вы работаете в среде Python, в которую вы установили свой проект, это позволит вам просто набрать project [args] в командной строке.

Вот документация по упаковке Python: Документы по упаковке Python

Пример:

Допустим, у вас есть проект со следующей структурой:

project
  project/
    __init__.py
    cli.py
  setup.py
  README.md
  LICENSE

С функцией с именем main в cli.py, которая отвечает за выполнение кода.

Вы бы изменили закомментированный код в репозитории Кеннета на:

entry_points={
    'console_scripts': ['project=project.cli:main'],
},
0 голосов
/ 12 ноября 2018

Запускать модули с помощью cmd, используя флаг -m:

python -m <package-name>

В вашем случае

python -m project
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...