23

我正在尝试将目录添加到 PATH 代码如下:

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

它不起作用。如果我打印sys.path,我会看到如下内容:

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

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

4

4 回答 4

34

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

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

PROJECT_DIRis instance of PosixPathwhich has all the goodies like /and parentsetc. 但如果你想在某个地方使用字符串,则需要将其转换为常规字符串 - 比如sys.path.

于 2015-09-21T17:29:07.313 回答
4

对类似路径的对象的支持sys.path即将到来(请参阅此拉取请求),但还没有。

于 2020-11-20T12:52:06.900 回答
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

于 2020-11-19T06:03:27.897 回答
-10
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 非常好的路径工具?

于 2015-09-21T17:33:58.357 回答