Обычно я создаю скрипты консолей в Python, но не использует инструменты установки. Сейчас я пытаюсь использовать setuptools, чтобы автоматически управлять локальной установкой и подготовить ее к распространению. Я наткнулся на проблему, которая может быть немного обычной, но не смог найти ничего в Google. Обычно запускается консольный скрипт с python3 my_script.py
, и есть оператор imports
, который обычно загружается. Но при установке с помощью setuptools я получил следующую ошибку:
ModuleNotFoundError: No module named 'My_Object'
... если я попытаюсь локально импортировать модуль с именем My_Object
.
Если программа установки не установит также модуль зависимостей, чтобы скрипт работал? Или чего-то не хватает в файле установки?
Вот мой setup.py
файл в проекте root:
from setuptools import setup
VERSION = '0.0.1'
def readme():
with open('README.md') as f:
return f.read()
setup(
name='object-test',
version=VERSION,
description="Test setup script",
long_description_content_type="text/markdown",
long_description=readme(),
keywords="Testing import in installation",
author="Danilo Silva",
author_email="contact@danilocgsilva.me",
packages=["src"],
entry_points={"console_scripts": ["importtest=src.entry:main"],},
include_package_data=True
)
Ниже, содержимое файла entry.py
внутри моя локальная src
папка:
from My_Object import My_Object
def main():
print("Hello! This is just an application test for importing")
my_object = My_Object()
print(my_object.main())
# main()
и My_Object.py
файл, также внутри src
папка:
class My_Object:
def main(self):
return 'Hello! And this is the imported output!'
Обычно я раскомментирую последний main()
в entry.py
просто чтобы убедиться, что все работает нормально, затем запустите скрипт, набрав в консоли python3 entry.py
. Это гарантирует, что в моем скрипте все в порядке и не выдается ModuleNotFoundError
.
Как заставить операторы импорта работать в консольном скрипте, установленном setuptools? Чего мне не хватает?