sys.path.append('...') 语句应该放在哪里?
是在标准的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
这段话的意思是,某些代码需要在import
或from
语句之前写,这一点是显而易见的。举个例子,一个模块可以这样开始:
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
,这样就没什么用处了;-)。