gpt4 book ai didi

python - 使用 Git/PyCharm 维护 Python 项目的精简版和专业版

转载 作者:太空狗 更新时间:2023-10-30 01:27:30 25 4
gpt4 key购买 nike

背景

我正在完成一个 python 项目,我正在考虑发布一个带有 pro/lite 版本的项目。当然,我不希望出现重复的代码,但我无法发布免费版本,因为专业版的许多功能只能通过一些 if 检查来禁用:代码用于一个 Blender 插件,因此如果功能仍然存在,将很容易编辑并变成专业版。

问题

使用 Git/Pycharm 维护这样一个项目的最佳方法是什么(或者我最好不要担心精简版)没有重复代码I have read that using multiple Git branches is not the way to go.

免责声明

我确实意识到有很多关于这个主题的类似问题。然而,其中许多与使用 Xcode 有关,还有更多没有明确的答案。不要误会我的意思,我知道我可以通过多种方式做到这一点 - 但我正在寻找最好的方式,最干净的方式。

最佳答案

这是基于您将代码分离到不同模块中的基本想法。现在,这个概念有 2 个不同的下载点。但这不一定是,那是你的决定。

无论您采用哪种打包/分发方法,您都必须将代码行分离到不同的代码模块中。即使只是一次下载。

lite/common_core.py - 从 github.lite 安装

#things you want in common between pro and lite
#i.e. what would be your "duplicate code"
def common_func1():
pass

注意:我不会将 pro 和 lite 通用的东西直接放到 lite/main.py 中,因为你想通过在 lite 中公开 pro 来呈现统一的 API,但你不想同时拥有 pro import lite ,因为这会冒循环导入依赖的风险。

lite/main.py - 从 github.lite 安装

#things you want in common between pro and lite
import lite.common_core
#or import lite.common_core as common

def lite_function1():
pass

def lite_function2():
pass

try:
#you need to determine an appropriate path strategy
#a pypi-installed pro package should be available on the sys.path
from pro.main import *
# or import pro.main as pro
except ImportError:
pass

#client code can now call functions from the lite and pro

pro/main.py - 从 github.pro 安装

import lite.common_core

def pro_function1():
pass

你可以让 lite 成为 pro pypi 包的一个要求,这样如果用户以这种方式开始,他们仍然只能下载一个。

此外,关于您指向 re git 分支的答案,另一种思考方式是您可能正在尝试修复/增强 say pro。因此,从 pro 的 master 开始,您希望自由地创建一个新的分支,并且仍然知道 lite 的 master(因为您依赖它)。如果您在同一个存储库中兼顾专业版和精简版,并且使用分支将专业版/精简版分开,那么这种簿记将变得很困难。

关于python - 使用 Git/PyCharm 维护 Python 项目的精简版和专业版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38851381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com