假设我有一个包含两个模块的大项目:
workspace/
module_1/
main.py
module_2/
content.py
standalone.py
与:
# module_1/main.py
from module_2.content import Foo
Foo.bar()
# module_2/content.py
class Foo:
def bar():
pass
# module_2/standalone.py
from content import Foo
Foo.bar()
问题是,在 module_2 中,如果我使用
from content import Foo
,从外部使用时(例如,启动 module_1/main.py 时)它会中断,而使用 from module_2.content import Foo
时,它会在运行standalone.py 时中断。
我是否误解了我应该采取的处理方式?最终目标是拥有一个可以用作其他项目的模块的工具,并且可以单独启动。
包的目录结构:
.
├── my_package
│ ├── __init__.py
│ ├── my_subpackage_1
│ │ ├── __init__.py
│ │ └── main.py
│ └── my_subpackage_2
│ ├── __init__.py
│ ├── content.py
│ └── standalone.py
└── setup.py
import
完整模块路径:
# my_package/my_subpackage_1/main.py
from my_package.my_subpackage_1.content import Foo
...
你可以
pip install .
感谢setup.py
:
from setuptools import find_packages, setup
setup(
name="my_package",
packages=find_packages(),
)