python unipath:当前文件目录(祖先)的路径不输出任何内容

Joh*_*hnJ 1 python python-2.7

我一直在努力学习python-unipath并且已经掌握了基本的命令.但是,我被这个问题困扰了.所以,我想得到当前文件的祖先(2).所以,在python解释器上,我做了这样的事情:

Python 2.7.3 (default, Jan  2 2013, 13:56:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from unipath import Path
>>> ORM_ROOT = Path("/home/foo/lump/foobar/turf/orm/unipath_try.py").ancestor(2)
>>> ORM_ROOT
Path('/home/foo/lump/foobar/turf')
Run Code Online (Sandbox Code Playgroud)

..这是正确的,正是我想要的.现在,我将它包装在一个文件中,如下所示:

# -*- coding: utf-8 -*-
# unipath_try.py

from unipath import Path
ORM_ROOT = Path(__file__).ancestor(2)
print ORM_ROOT
Run Code Online (Sandbox Code Playgroud)

当我运行这个使用时,python unipath_try.py我没有输出!没有导入错误.我完全不知道为什么会这样 - 可能是非常愚蠢的事情.将不胜感激任何帮助/方向:(

ale*_*cxe 5

os.path.abspath(__file__)而不是__file__.

这是因为__file__在您的情况下包含相对路径.

__file__ 可以包含不同情况下的相对路径或绝对路径:

所以,如果你不在包含模块的sys.path部分内,你将获得一个绝对路径.如果您位于包含模块的sys.path部分内,您将获得相对路径.

如果在当前目录中加载模块,并且当前目录不在sys.path中,则将获得绝对路径.

如果在当前目录中加载模块,并且当前目录在sys.path中,则会获得相对路径.

(引用Python __file__属性绝对或相对?)