gpt4 book ai didi

python - 为什么使用 sys.path.append(path) 而不是 sys.path.insert(1, path)?

转载 作者:IT老高 更新时间:2023-10-28 21:12:42 34 4
gpt4 key购买 nike

编辑:基于 Ulf Rompe 的评论,重要的是使用“1”而不是“0”,否则您将破坏 sys.path .

我已经做 python 很长一段时间了(一年多),我总是很困惑为什么人们建议你使用 sys.path.append() 而不是 sys.path.insert()。让我演示一下。

假设我正在开发一个名为 PyWorkbooks 的模块(安装在我的计算机上),但同时我正在开发一个包含 PyWorkbooks 的不同模块(例如 PyJob)。在处理 PyJob 时,我在 PyWorkbooks 中发现了我正在纠正的错误,所以我想导入一个开发版本。

这两种方法都有多种工作方式(例如,我可以将我的 PyWorkbooks 项目放在 PyJob 中),但有时我仍然需要使用路径。但是,我不能简单地对 PyWorkbooks 所在的文件夹执行 sys.path.append()。为什么?因为python会先找到我安装的PyWorkbooks!

这就是为什么你必须做一个 sys.path.insert(1, path_to_dev_pyworkbooks)

总结:

sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one

或:

sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file

这在过去给我造成了一些困扰,如果我们(作为一个社区)开始推荐 sys.path.insert(1, path),我真的很高兴,就好像您正在手动插入路径我认为可以肯定地说那是您要使用的路径!

还是我有什么问题?这是一个有时困扰我的问题,我希望公开!

最佳答案

如果您确实需要使用 sys.path.insert,请考虑保留 sys.path[0] 原样:

sys.path.insert(1, path_to_dev_pyworkbooks)

这可能很重要,因为第 3 方代码可能依赖于 sys.path documentation一致性:

As initialized upon program startup, the first item of this list, path[0], is the directory containing the script that was used to invoke the Python interpreter.

关于python - 为什么使用 sys.path.append(path) 而不是 sys.path.insert(1, path)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10095037/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com