运行 python project from source时,如何避免与安装包冲突
When running python project from source, how to avoid conflict with installed package
我一直在 Jupyter Notebook IPython 环境中使用通过 pip 和 运行 安装的开源包。
我需要修改包的源,所以我在本地克隆了 repo 并进行了更改,并导入了本地包而不是已安装的包,没有问题。
我遇到的问题是,在项目源代码中,它导入了自己的包,该包正在导入已安装的包而不是源项目,在少数情况下会导致代码冲突.
假设包名为 PackageA
,最初是通过 pip install PackageA
安装的。我现在在项目目录下的 libs/
目录中有 Package A
的源代码。 projectDir/libs/PackageA
。我正在通过 from libs.PackageA import PackageA as pa
导入项目,但是在源代码中(几乎在每个文件中)它都有 import PackageA as pa
.
我可以查看源代码并将 import PackageA as pa
的每个实例更改为 from .. import PackageA as pa
但这可能发生在 100 多个文件中,因为有些文件有多个导入语句,而且它也很不整洁,因为有些文件在需要 from .... import PackageA as pa
的子目录中。
有没有办法重定向导入以使用本地版本而不是安装版本(我已经卸载了pip安装版本)。
我对 python(不是软件开发)还很陌生,所以这种设置是否有最佳实践,因为我确信它很常见。
您可以在项目开始前添加 sys.path.append("../libs")
。
我一直在 Jupyter Notebook IPython 环境中使用通过 pip 和 运行 安装的开源包。
我需要修改包的源,所以我在本地克隆了 repo 并进行了更改,并导入了本地包而不是已安装的包,没有问题。
我遇到的问题是,在项目源代码中,它导入了自己的包,该包正在导入已安装的包而不是源项目,在少数情况下会导致代码冲突.
假设包名为 PackageA
,最初是通过 pip install PackageA
安装的。我现在在项目目录下的 libs/
目录中有 Package A
的源代码。 projectDir/libs/PackageA
。我正在通过 from libs.PackageA import PackageA as pa
导入项目,但是在源代码中(几乎在每个文件中)它都有 import PackageA as pa
.
我可以查看源代码并将 import PackageA as pa
的每个实例更改为 from .. import PackageA as pa
但这可能发生在 100 多个文件中,因为有些文件有多个导入语句,而且它也很不整洁,因为有些文件在需要 from .... import PackageA as pa
的子目录中。
有没有办法重定向导入以使用本地版本而不是安装版本(我已经卸载了pip安装版本)。
我对 python(不是软件开发)还很陌生,所以这种设置是否有最佳实践,因为我确信它很常见。
您可以在项目开始前添加 sys.path.append("../libs")
。