使用 environ 模块添加系统路径

Adding a path to the system using environ module

在设置文件中,我将路径附加到系统硬编码 url,如下所示:

sys.path.append('/home/user/path/to/projectdir')

有效。

一旦我想让它成为相对的,即使我用 environ 模块检索确切的路径,它也会失败。

import environ

ROOT_DIR = environ.Path(__file__) - 3
sys.path.append(ROOT_DIR.path())

对我来说不可思议的是 print(ROOT_DIR.path()) 输出 project_dir 的 url。

print(ROOT_DIR.path())
> '/home/user/path/to/projectdir'

这是我的项目树。

project_dir
└── soloscrap
    └── soloscrap
        ├── settings.py

那我怎么添加这个路径呢?是不是很奇怪?

我想 environ 来得太晚了,路径已经确定了。所以解决方案似乎是这样的:

SYSPATH = os.path.dirname(
    os.path.dirname(
        os.path.dirname(
            os.path.abspath(__file__)
        )
    )
)

sys.path.append(SYSPATH)

这不优雅。

如果你想获取相对路径如何:

os.path.join("..", "..", __file__)

(终端略有不同)

In [1]: import os

In [3]: os.getcwd()
Out[3]: 'c:\Temp\foo\bar'

In [4]: os.path.abspath(os.path.join('..','..',__name__))
Out[4]: 'c:\Temp\__main__'

In [5]: