编辑:根据 Ulf Rompe 的评论,使用 "1" 而不是 "0" 很重要,否则会破坏sys.path。
我做 python 已经有一段时间了(一年多了),我总是很困惑为什么人们推荐你使用sys.path.append()
而不是sys.path.insert()
. 让我演示一下。
假设我正在开发一个名为 PyWorkbooks 的模块(安装在我的计算机上),但我同时正在开发一个包含 PyWorkbooks 的不同模块(比如说 PyJob)。当我在 PyJob 上工作时,我发现我正在纠正的 PyWorkbooks 中的错误,所以我想导入一个开发版本。
有多种方法可以同时处理这两种方法(例如,我可以将我的 PyWorkbooks 项目放在 PyJob 中),但有时我仍然需要使用路径。但是,我不能简单地对sys.path.append()
PyWorkbooks 所在的文件夹执行操作。为什么?因为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)
,我真的很喜欢它,就像你手动插入一条路径我认为可以肯定地说那是你想要的路径使用!
还是我有什么问题?这是一个有时困扰我的问题,我希望它公开!