我正在开发一个嵌入式系统项目,我的
对于Python3应用程序,
每次我需要从一个模式切换到另一个模式时,都需要更改大量代码,有时还会引入错误。我知道这种方法并不是最佳实践,想知道有哪些最佳实践。
找到的最接近的解决方案: 这里有一种很好的解决方案,可以为每个环境设置不同的变量。我希望有类似的解决方案,可以在不同的环境中引入不同的包。
我的设置:
基本工作流程:
- 每秒执行一个
基本文件夹结构:
-
dev
设置与prod
不同,包括变量和包的导入。对于Python3应用程序,
dev
和prod
之间配置文件的最佳结构方式是什么?
prod
: 我的设备使用pyserial与电子系统交换信息,并与服务器通信。
dev
: 我使用来自函数的虚拟固定响应来模拟电子和服务器的响应。尽管这些函数在prod
中很重要,但在dev
中它们不那么重要。我可以模拟它们,因为此项目最重要的部分是使用和处理它们的函数。因此,在dev
模式下,某些包的导入和函数调用是没有意义且会引入错误的。每次我需要从一个模式切换到另一个模式时,都需要更改大量代码,有时还会引入错误。我知道这种方法并不是最佳实践,想知道有哪些最佳实践。
找到的最接近的解决方案: 这里有一种很好的解决方案,可以为每个环境设置不同的变量。我希望有类似的解决方案,可以在不同的环境中引入不同的包。
我的设置:
基本工作流程:
- 每秒执行一个
task
线程
- module_1
执行工作并调用module_2
- module_2
执行工作并调用module_3
- module_3
执行工作并发送响应基本文件夹结构:
-
root
- main
- config.py
- /config
- prod
- dev
- /mod_1
- /mod_2
- /mod_3
- /replace_imports
module_1
和module_3
在prod
中各自使用特定的包,必须替换为dev
函数。# config.py
if os.environ["app"] == "dev":
import * from root.config.dev
if os.environ["app"] == "prod":
import * from root.config.prod
# config/prod.py
import _3rd_party_module_alpha
import _3rd_party_module_beta
...
obj_alpha = _3rd_party_module_alpha()
func_beta = _3rd_party_module_beta()
# config/dev.py
import * from root.replace_imports
# replace_imports.py
obj_alpha = fake_3rd_party_module_alpha()
func_beta = fake_3rd_party_module_beta()
from <module> import *
,而不是import * from <module>
。(而且from ... import *
也不被推荐使用。) - chepner