如何修改导入语句,优先导入与第三方库同名的本地Pkg1文件夹?
解决本地同名包与第三方包的导入冲突
当本地Pkg1文件夹和已安装的第三方同名包冲突时,你可以用以下几种办法优先导入本地内容:
1. 手动提升本地包的路径优先级
在run.py的最开头添加代码,把本地Pkg1的根目录放到Python路径的最前面,让解释器优先查找本地包:
import sys import os # 拿到本地Pkg1的绝对路径(run.py在scripts目录,往上退一级就是Pkg1根目录) local_pkg_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) # 插入到sys.path最顶端,覆盖默认的第三方包路径 sys.path.insert(0, local_pkg_root) # 现在导入的就是本地Pkg1里的Function1了 from Pkg1 import Function1
2. 使用相对导入
因为run.py是本地Pkg1的子模块(位于Pkg1/scripts),可以用相对导入直接引用上层包的内容:
from .. import Function1
⚠️ 注意:用这种方式时,不能直接双击或用python run.py执行脚本,必须以包的模块形式运行,命令是:
python -m Pkg1.scripts.run
3. 临时卸载第三方包(仅临时测试用)
如果只是临时验证本地包功能,可以先卸载第三方Pkg1,测试完再装回去:
pip uninstall -y Pkg1 # 测试完成后重新安装 pip install Pkg1
这种方法不适合长期使用,会影响其他依赖该第三方包的项目。
内容的提问来源于stack exchange,提问作者Nikola Tolzsek
相关产品推荐
相关产品推荐

