我有两个库,它们都使用类型扩展,但它们使用不同版本的类型扩展。这一冲突导致了一个问题,因为一个项目中需要这两个库。我怎样才能解决这个问题而不需要重写其中一个库?
我尝试替换一个库,但对于我的 Python 目标来说,只有一个可用。另一个 - aiogram 正是需要的,因为该项目是使用它编写的。
一种选择是安装一个版本,转到
venv_folder/Lib/site-packages
,找到该软件包,并将其文件夹名称和代码编辑为新名称,然后安装另一个版本。但是,您可能需要编辑其他库才能使用新的包名称,这可能就是您所说的“重写库”的意思。如果您想避免这种情况...
另一种选择是使用两个虚拟环境。这样你就可以在每个环境中安装一个包版本,以及相应的代码。它不漂亮,但它可以工作。
首先,像平常一样使用 venvs 设置两个文件夹,并将代码分成使用每个包版本的部分。 (您可能需要使用一些小函数,这些函数仅使用一个库执行一部分代码,与使用另一个库的代码分开。)
然后,要使用两个 venv 中的代码,请选择一个 venv(我们将其称为 VENV A)并将其格式化为 python 包(请参阅 [https://packaging.python.org/en/latest/tutorials/打包项目/#创建包文件)。完成此操作后,您可以使用 VENV B 中的 pip install -e path/to/VENV_A_package
将其作为模块安装在另一个 venv (
VENV B) 中。
现在,您可以从使用另一个库的脚本运行代码或访问使用一个库的函数。