Мой проект имеет следующую структуру:
project/
+ setup.py
+ bobafett/
+ __init__.py
+ __main__.py
+ foo.py
С:
__init__.py
: пустой файл foo.py
: содержит определениеиз bar
:
def bar():
print("foo.bar()")
__main__.py
импорт и использование foo.bar
:
import foo
foo.bar()
✓ Локально, все работает хорошо:
~/project $ python3 bobafett/__main__.py
foo.bar()
✗ Как только bobafett
упакован, опубликован и установлен, foo
больше не найден
~/project $ python3 setup.py bdist_wheel
~/project $ curl -T ... https://my-pypi.example.com/simple/bobafett/...
~/project $ cd /tmp
/tmp $ pip --index-url https://my-pypi.example.com/simple --user bobafett
/tmp $ python -m bobafett
...
File "/home/ysc/.local/lib/python3.6/site-packages/bobafett/__main__.py", line 1, in <module>
import foo
ModuleNotFoundError: No module named 'foo'
Как это? Что я могу написать вместо import foo
, который работает локально и после развертывания? Нужно ли менять структуру моего проекта?
setup.py
:
from setuptools import setup
setup(
name='bobafett',
version='1.0.0',
author='YSC',
author_email='ysc@example.com',
packages=['bobafett'],
url='https:///my-pypi.example.com/simple/bobafett/',
description='Prints "foo.bar()".',
)