From 78c73def8a4e46bc9eb0381504287aa55780d0f3 Mon Sep 17 00:00:00 2001 From: Rock Chin <1010553892@qq.com> Date: Mon, 16 Jan 2023 21:34:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E7=94=A8pip=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 6 ++++++ pkg/utils/pkgmgr.py | 31 +++++++++++++++++++++++++++++++ pkg/utils/updater.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 pkg/utils/pkgmgr.py diff --git a/main.py b/main.py index f098f85e..e6a0d1ba 100644 --- a/main.py +++ b/main.py @@ -240,6 +240,12 @@ if __name__ == '__main__': elif len(sys.argv) > 1 and sys.argv[1] == 'update': try: + try: + import pkg.utils.pkgmgr + pkg.utils.pkgmgr.ensure_dulwich() + except: + pass + from dulwich import porcelain repo = porcelain.open_repo('.') diff --git a/pkg/utils/pkgmgr.py b/pkg/utils/pkgmgr.py new file mode 100644 index 00000000..590a2f7c --- /dev/null +++ b/pkg/utils/pkgmgr.py @@ -0,0 +1,31 @@ +from pip._internal import main as pipmain + + +def install(package): + pipmain(['install', package]) + + +def install_requirements(file): + pipmain(['install', '-r', file]) + + +def ensure_dulwich(): + # 尝试三次 + for i in range(3): + try: + import dulwich + return + except ImportError: + install('dulwich') + + raise ImportError("无法自动安装dulwich库") + + +if __name__ == "__main__": + try: + install("openai11") + except Exception as e: + print(111) + print(e) + + print(222) \ No newline at end of file diff --git a/pkg/utils/updater.py b/pkg/utils/updater.py index 3dedc238..66a33b73 100644 --- a/pkg/utils/updater.py +++ b/pkg/utils/updater.py @@ -5,6 +5,12 @@ import pkg.utils.context def update_all() -> bool: """使用dulwich更新源码""" + try: + import pkg.utils.pkgmgr + pkg.utils.pkgmgr.ensure_dulwich() + except: + pass + try: import dulwich except ModuleNotFoundError: @@ -37,6 +43,12 @@ def update_all() -> bool: def get_current_version_info() -> str: """获取当前版本信息""" + try: + import pkg.utils.pkgmgr + pkg.utils.pkgmgr.ensure_dulwich() + except: + pass + try: import dulwich except ModuleNotFoundError: @@ -62,6 +74,12 @@ def get_current_version_info() -> str: def get_commit_id_and_time_and_msg() -> str: """获取当前提交id和时间和提交信息""" + try: + import pkg.utils.pkgmgr + pkg.utils.pkgmgr.ensure_dulwich() + except: + pass + try: import dulwich except ModuleNotFoundError: @@ -79,6 +97,12 @@ def get_commit_id_and_time_and_msg() -> str: def get_current_commit_id() -> str: """检查是否有新版本""" + try: + import pkg.utils.pkgmgr + pkg.utils.pkgmgr.ensure_dulwich() + except: + pass + try: import dulwich except ModuleNotFoundError: @@ -97,6 +121,12 @@ def get_current_commit_id() -> str: def is_new_version_available() -> bool: """检查是否有新版本""" + try: + import pkg.utils.pkgmgr + pkg.utils.pkgmgr.ensure_dulwich() + except: + pass + try: import dulwich except ModuleNotFoundError: