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: