2014-11-06 108 views
0

所以我工作的地方,我定义的所有路径到其他Python模块作为绝对路径的一个项目:导入模块的最佳做法是什么:绝对路径或相对路径?

import sys 
sys.path.append('/home/user123/my_project/utilities') 
import file_utilities 

但后来我有项目移动到不同的文件夹,这打破了一切。我不得不手动编辑所有路径来说明文件夹更改。

我最初使用绝对路径是不好的选择吗?我最初避免了相对路径,因为我认为它会很快变得难看:

import sys 
sys.path.append('../../../../utilities') 
import file_utilities 

最佳实践是什么?

+4

最好的做法是不要太用'sys.path'搞乱。 – 2014-11-06 13:06:47

+1

使用virtualenv一起收集您的代码和您的依赖关系,这将确保您的sys.path是正确的。 – babbageclunk 2014-11-06 13:28:48

+0

@MartijnPieters在这个例子中你将如何导入'file_utilities'? – 2014-11-06 13:52:25

回答

1

一个方便的解决方案将是 “移动” 一个基本路径,即,基本路径= “/家/ user123 /” 到一个变量和地址路径作为

sys.path.append('{}/MY_PROJECT/utilities'.format(basepath))

这将丑陋的相对符号,给你灵活性。

+1

但是,您将使用'os.path.join()'而不是格式化。 – 2014-11-06 14:00:01