По сути, у меня есть два проекта Python, один из которых находится под myapp/screening
, а другой myapp/server
. В настоящее время я занимаюсь разработкой модуля server
и хочу импортировать функции из screening
, используя myapp.screening
.
Структура моей папки показана ниже:
myapp/
screening/
screening-env/
myapp/
__init__.py
screening/
__init__.py
screening_task.py
submodule1/
# __init__.py and ub module files
submodule2/
# __init__.py and sub module files
submodule3/
# __init__.py and sub module files
tests/
# __init__.py and test scripts
setup.py
server/
server-env/
myapp/
__init__.py
server/
__init__.py
server_task.py
tests/
__init__.py
server_test.py
Я структурировал свой проект, следуя этому ответу .
Мой setup.py
в основном, как показано ниже:
from setuptools import setup
setup(
name='myapp-screening',
version='0.1.0',
packages=[
'myapp.screening',
'myapp.screening.submodule1',
'myapp.screening.submodule2',
'myapp.screening.submodule3'
],
)
Я активировал server-env
и установил проект проверки, перейдя к myapp/screening/
(тот же каталог, что и setup.py
), и запустил python setup.py develop
.
Наконец, server_test.py
и server_task
, такие как ниже:
from myapp.screening.screening_test import foo
foo()
Когда я запускаю python -m myapp.server.server_task
или python -m test.server_test
, я получаю:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'myapp.screening'
Эта ошибка имеет смысл, если я запускаю python -m myapp.server.server_task
, потому что локальный myapp
Существующий и может перезаписать установленный myapp
, содержащий модули screening
.
Есть ли способ импортировать вещи из screening
, используя from myapp.screening.screening_task import foo
?!