编辑:根据Ulf Rompe的评论,重要的是使用“1”而不是“0”,否则你将会破坏sys.path。
我已经写了一段时间的Python(超过一年),我总是困惑于为什么人们推荐使用sys.path.append()
而不是sys.path.insert()
。 让我来举个例子。
假设我正在开发一个名为PyWorkbooks的模块(已安装在我的计算机上),但同时我也在开发另一个模块(比如说PyJob),它包含PyWorkbooks。 当我在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)
。如果你手动插入路径,那么可以肯定你想要使用的就是这个路径!
或者我理解错了?这是一个有时困扰我的问题,我想公开讨论一下!
sys.path.insert(1, dev_folder)
,但仍然找不到开发模块,只能使用安装的模块。我该怎么解决这个问题? - endolith