python - 从源代码运行python项目时,如何避免与已安装的包冲突
问题描述
我一直在使用通过 pip 安装并在 Jupyter Notebook IPython 环境中运行的开源包。
我需要修改包的来源,所以我在本地克隆了 repo 并进行了更改并导入了本地包而不是安装的包,没有问题。
我遇到的问题是,它在项目源内部导入了自己的包,该包正在导入已安装的包而不是源项目,并且在某些情况下会导致代码冲突。
假设包名是PackageA
,最初是通过pip install PackageA
. 我现在在我的项目目录下的目录Package A
中拥有源代码。. 我正在通过 导入项目,但是在它具有的源代码(几乎在每个文件中)中。libs/
projectDir/libs/PackageA
from libs.PackageA import PackageA as pa
import PackageA as pa
我可以浏览源代码并更改 with 的每个实例,import PackageA as pa
但这from .. import PackageA as pa
可能发生在 100 多个文件中,因为有些文件有多个 import 语句,而且它也非常不整洁,因为有些文件位于需要from .... import PackageA as pa
.
有没有办法重定向导入以使用本地版本而不是安装的版本(我已经卸载了 pip 安装的版本)。
我对python(不是软件开发)相当陌生,所以这种类型的设置是否有最佳实践,因为我确信它相当普遍。
解决方案
您可以sys.path.append("../libs")
在项目开始之前添加。
推荐阅读
- python-3.x - Python3 - 无法在“import cairosvg”上加载库
- javascript - 如何将 UL 附加到 SPAN?
- php - 如何通过官方 Zendesk API PHP 客户端获取群组的所有门票?
- android - .zip for iterable (rxJava) 的问题
- graphics - 云台锁怎么会发生?
- docker - .NET Core Web 应用程序不会在 Docker 容器中运行
- android - runOnUiThread 未执行
- html - 如何在 CSS 中使用“文本装饰”?
- python - 类中的python字典函数调用
- android - 使用 getFragmentManager() 时的类型不兼容