sys.path.append('...') 语句应该放在哪里?

4 投票
5 回答
5640 浏览
提问于 2025-04-15 19:40

是在标准的Python模块导入之后吗?如果我把它推迟到主函数里面,并在它之前导入我特定的模块,就会出现错误(这很明显)。Python的风格指南里并没有提到它的正确位置。

5 个回答

1

我经常用一个脚本来启动我的Python应用程序:我会把我的sys.path.insert(或append)语句放在我“启动Python脚本”中的“标准”Python模块导入之后。

使用sys.path.insert(0, ...)可以让你的“导入”在路径列表中优先被找到。

4

这个内容没有在PEP 8或者其他好的Python风格指南中提到的一个原因是,修改 sys.path 并不是你在真正的程序中想要做的事情;这样会让你的程序变得不够稳定和可移植。更好的解决办法可能是把你的包放在一个已经在 sys.path 中的地方,或者在系统范围内定义 PYTHONPATH 来包含你的包。

8

这段话的意思是,某些代码需要在importfrom语句之前写,这一点是显而易见的。举个例子,一个模块可以这样开始:

import sys
import os
import math
try:
  import foo
except ImportError:
  if 'foopath' in sys.path: raise
  sys.path.append('foopath')
  import foo

我这里提到的“附加”是有条件的,意思是只有在导入失败并且特定模块的路径还不在sys.path里的时候才会添加。这样做是为了避免sys.path里出现很多重复的字符串foopath,这样就没什么用处了;-)。

撰写回答