我计划开发一个中等规模的Web应用程序(需要大量后端工作),使用多个包(内部和外部)。由于这是我第一次开发这样规模的应用程序,我想请教一些问题:
- 如何确保满足所有依赖关系(没有缺少必需的包/模块,从正确的位置导入包等)?
- 如何管理包/模块的版本?我希望能够引入新版本的包/模块,同时最小化其他相关包/模块的代码更改。
请告诉我是否有任何工具可以帮助解决这些问题。如果在管理此规模的代码时存在任何其他挑战(我可能还不知道),请提醒我并提供解决方法。
我目前了解到的(并认为这可能有助于代码管理):
__all__
用于定义可导出的模块。- 使用前置单下划线来防止模块被导入。
__init__.py
用于在包级别上管理导入(因此当我执行import package_name
时,__init__.py
可以集中控制其他导入)。- PEP 328 用于管理相对导入、importlib 和其他与导入相关的事项。
- 我想一些第三方包也会定义
__version__
或VERSION
变量以在运行时检查版本,但我不确定是否可以依赖它。
如果有书籍、博客等可以帮助的话,请告诉我。
编辑:我不确定这种类型的问题是否适合在SO上提问。如果不是,请原谅。
requirements.txt
中安装带有版本的软件包(更新的答案)。我不确定如何解决个人软件包的问题,但pip也可以从本地文件安装。 - timss