【问题标题】:Python add windowsPath to sys.pathPython 将 windowsPath 添加到 sys.path
【发布时间】:2021-12-13 15:47:25
【问题描述】:

我需要将动态创建的包动态添加到我的sys.path。我有一个some.py 文件,在media\TEMP 目录中保存了一个方法that

此代码有效:

sys.path.append("""C:\\Users\\admin\\Desktop\\tools\\testtool\\media\\TEMP""")

这会导致:

[
...
'C:\\Users\\admin\\Desktop\\tools\\\testTool\\venv', 
'C:\\Users\\admin\\Desktop\\tools\\\testTool\\venv\\lib\\site-packages', 
'C:\\Users\\admin\\Desktop\\tools\\\testTool\\media\\TEMP'
]

importlib.import_module(f"{some}.{that}") 有效。但这不起作用:

sys.path.append(Path.cwd().parent.joinpath("media", "TEMP"))

这会导致:

[
... 
'C:\\Users\\admin\\Desktop\\tools\\\testTool\\venv', 
'C:\\Users\\admin\\Desktop\\tools\\\testTool\\venv\\lib\\site-packages', 
WindowsPath('C:/Users/admin/Desktop/tools/testTool/media/TEMP'
]

这失败了ModuleNotFoundError。 Windows 路径不能在sys.path 中吗?我也尝试了Path.resolve(),但没有成功。

【问题讨论】:

  • 拨打str()WindowsPath
  • 请将其发布为答案,以便我可以接受它的愚蠢。
  • 完成。很高兴我能帮忙:)

标签: python python-import pythonpath python-importlib


【解决方案1】:

您不能将pathlib.Path 对象(包括WindowsPath)放入sys.path,只能是纯字符串。

换句话说,您需要对它们调用str(...)

sys.path.append(str(Path.cwd().parent.joinpath("media", "TEMP")))

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2019-03-14
    • 2013-04-13
    • 2012-08-28
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多