Python sys.path修改不起作用

cel*_*vek 9 python path

我正在尝试修改我的一个Python文件中的sys.path,以便在模块搜索路径中有一些特定的库dirs(它可能不是最好的方式,但是......).如果我在sys.path的前面插入几个路径,我的脚本没有考虑将来导入的路径.如果我创建一个包含我需要的库的全新列表并将该列表分配给sys.path,则会考虑这些导入.这是正确的行为吗?我正在使用python 2.5.4.这可能是我的环境可能导致这种行为吗?

一些代码片段:如果我这样做

pathtoInsert1 = " .... "
pathtoInsert2 = " .... "
sys.path.insert(0, pathToInsert1)
sys.path.insert(0, pathToInsert2)

pathList = [pathToInsert1, pathToInsert2] 
sys.path = pathList

pathtoInsert1 = " .... "
pathtoInsert2 = " .... "
sys.path.insert(0, pathToInsert1)
sys.path.insert(0, pathToInsert2)

有用.

谢谢

Eli*_*ght 18

您真的需要为我们发布一些代码才能帮助您.但是,我可以做出有根据的猜测.你说如果你创建一个全新的列表并将其分配给sys.path那么它就可以了.我认为你的意思是你正在做这样的事情

sys.path = ["dir1", "dir2", ...]
Run Code Online (Sandbox Code Playgroud)

但是,如果您在开头插入路径,那么它不起作用.我的猜测是你正在使用insert方法,就像这样

sys.path.insert(0, ["dir1", "dir2"])
Run Code Online (Sandbox Code Playgroud)

如果是,那么这是不正确的.这将创建一个看起来像的列表

[["dir1", "dir2"], "dir3", ...]
Run Code Online (Sandbox Code Playgroud)

你应该说

sys.path[:0] = ["dir1", "dir2"]
Run Code Online (Sandbox Code Playgroud)

哪个会给你

["dir1", "dir2", "dir3", ...]
Run Code Online (Sandbox Code Playgroud)

但是,在您发布代码之前,这一切都是猜测.


小智 2

您如何“插入”附加路径?

修改路径的方式与修改 Python 中任何其他列表的方式相同 - 尽管听起来您只是通过重新分配它来破坏它。

更新 sys.path 的示例:http://www.johnny-lin.com/cdat_tips/tips_pylang/path.html