使用pathlib将目录添加到sys.path

时间:2015-09-21 17:28:13

标签: python pathlib

我试图将目录添加到PATH机智代码中,如下所示:

PROJECT_DIR = Path(__file__).parents[2]
sys.path.append(
    PROJECT_DIR / 'apps'
)

它不起作用。如果我打印sys.path,我会看到类似这样的内容:

[..., PosixPath('/opt/project/apps')]

我该如何修复此代码?写str(PROJECT_DIR / 'apps')是否正常?

4 个答案:

答案 0 :(得分:11)

您需要将路径作为字符串附加到sys.path

PROJECT_DIR = Path(__file__).parents[2]
sys.path.append(
    str(PROJECT_DIR / 'apps')
)

PROJECT_DIRPosixPath的实例,其中包含/parents等所有内容,但如果您要使用,则需要将其转换为常规字符串是某个字符串是预期的 - 如sys.path

答案 1 :(得分:0)

您也可以使用os.fspath。它返回路径的文件系统表示形式。

import os
    
PROJECT_DIR = Path(__file__).parents[2]
APPS_DIR = PROJECT_DIR / 'apps'
sys.path.append(os.fspath(APPS_DIR))

文档: https://docs.python.org/3/library/os.html#os.fspath

答案 2 :(得分:0)

即将在build上支持类似路径的对象(请参见this pull request),但现在还没有。

答案 3 :(得分:-4)

project_dir = os.path.join(os.path.abspath(os.path.dirname(__file__)),"..","..")
sys.path.append(os.path.join(project_dir,"apps"))
#or maybe you need it at the start of the path
sys.path.insert(0,os.path.join(project_dir,"apps"))

为什么你使用这个奇怪的pathlib库而不是pythons完美的路径工具?