Я собрал действительно простой Python проект, который я упаковываю в файл .deb для установки. У меня работает сборка .deb, но когда я запускаю свой скрипт с помощью его команды, я получаю ModuleNotFoundError.
Моя структура проекта выглядит следующим образом:
setup.py
hello
|
| - __init.py__
| - hello.py
| - world.py
setup.py
import os
from setuptools import setup, find_packages
setup(
name = "hello_py",
version = "1.3",
author = "Sion Hughes",
author_email = "",
description = "It's a simple hello world, but this time with 2 python file",
license = "",
url = " ",
packages=find_packages(),
entry_points = {
'console_scripts' : ['hello = hello.hello:main',
'command-name = hello.hello:main']
},
classifiers=[
"License :: OSI Approved :: BSD License",
],
)
hello.py
#!/usr/bin/env python3
import world
def main():
print("Hello, this is Siôn's python script")
world.hello()
if __name__ == "__main__":
main()
world.py
#!/usr/bin/env python3
def hello():
print("Hello from another Python file")
Все работает локально, но когда я запускаю команду hello
, я получаю следующую ошибку:
# hello
Traceback (most recent call last):
File "/usr/bin/hello", line 11, in <module>
load_entry_point('hello-py==1.3', 'console_scripts', 'hello')()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 490, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2854, in load_entry_point
return ep.load()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2445, in load
return self.resolve()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2451, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python3/dist-packages/hello/hello.py", line 5, in <module>
import world
ModuleNotFoundError: No module named 'world'
Где я ошибаюсь, чтобы это работало? Заранее спасибо.
Обновление: забыл сказать в первоначальном посте, я хочу иметь возможность запускать скрипты в их локальном каталоге и в целях разработки, а не только запускаться через установленный .deb