【发布时间】:2018-05-02 19:19:52
【问题描述】:
基本上,我有两个python项目,一个位于myapp/screening下,另一个位于myapp/server下。我目前正在开发server 模块,并希望使用myapp.screening 从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
我按照answer 构建了我的项目。
我的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 存在并且可能会覆盖已安装的包含 screening 模块的 myapp。
有没有办法使用from myapp.screening.screening_task import foo从screening导入东西?!
【问题讨论】:
标签: python python-import setuptools setup.py