使用 pathlib 添加目录到 sys.path
Adding a directory to sys.path with pathlib
我正在尝试使用如下代码将目录添加到 PATH:
PROJECT_DIR = Path(__file__).parents[2]
sys.path.append(
PROJECT_DIR / 'apps'
)
没用。如果我打印 sys.path
我会看到这样的东西:
[..., PosixPath('/opt/project/apps')]
我应该如何修复此代码?写str(PROJECT_DIR / 'apps')
正常吗?
您需要将路径作为字符串附加到 sys.path
:
PROJECT_DIR = Path(__file__).parents[2]
sys.path.append(
str(PROJECT_DIR / 'apps')
)
PROJECT_DIR
是 PosixPath
的实例,它具有 /
和 parents
等所有优点,但如果需要,您需要将其转换为常规字符串要使用的地方是预期的字符串 - 例如 sys.path
.
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 库而不是 python 完美的路径实用程序?
您也可以使用 os.fspath
。它 return 路径的文件系统表示。
import os
PROJECT_DIR = Path(__file__).parents[2]
APPS_DIR = PROJECT_DIR / 'apps'
sys.path.append(os.fspath(APPS_DIR))
即将在 sys.path
上支持类似路径的对象(请参阅 this pull request),但还没有。
我正在尝试使用如下代码将目录添加到 PATH:
PROJECT_DIR = Path(__file__).parents[2]
sys.path.append(
PROJECT_DIR / 'apps'
)
没用。如果我打印 sys.path
我会看到这样的东西:
[..., PosixPath('/opt/project/apps')]
我应该如何修复此代码?写str(PROJECT_DIR / 'apps')
正常吗?
您需要将路径作为字符串附加到 sys.path
:
PROJECT_DIR = Path(__file__).parents[2]
sys.path.append(
str(PROJECT_DIR / 'apps')
)
PROJECT_DIR
是 PosixPath
的实例,它具有 /
和 parents
等所有优点,但如果需要,您需要将其转换为常规字符串要使用的地方是预期的字符串 - 例如 sys.path
.
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 库而不是 python 完美的路径实用程序?
您也可以使用 os.fspath
。它 return 路径的文件系统表示。
import os
PROJECT_DIR = Path(__file__).parents[2]
APPS_DIR = PROJECT_DIR / 'apps'
sys.path.append(os.fspath(APPS_DIR))
即将在 sys.path
上支持类似路径的对象(请参阅 this pull request),但还没有。