0

我想知道如果该目录不是包,是否可以从不是本地目录的目录中使用 python 中的 import 语句?另外,系统路径上的所有目录都必须是包吗?如果在系统路径中添加相对路径,它与什么相关?

4

2 回答 2

1

您可以更改 sys.path 以实现您要求的所有结果。

  1. 是的你可以。添加一个不是本地目录的目录:

    import sys
    sys.path += '/your_path/your_subpath/'  # absolute paths
    import your_package
    

    如果您需要从文件系统中的任意路径加载模块而不将其添加到 sys.path 您也可以使用imp.load_module

  2. 系统路径上的所有目录都必须是包吗?不,他们没有

  3. 如果在系统路径中添加相对路径,它与什么相关?

    到包含用于调用 Python 解释器的脚本的目录。 但是,我建议以这种方式设置它:

    import sys,os
    sys.path.append(os.path.realpath('..'))
    

    或从脚本的路径:

    import sys,os
    sys.path.append(os.path.realpath(os.path.join(os.path.dirname(sys.argv[0]), '..')))
    

    这两个示例也适用于交互式 shell。无论操作系统如何,这两个示例都确保相对路径是您的意思

    有关 python 中相对路径的更多详细信息,另请参阅这篇文章

于 2013-01-27T21:16:44.707 回答
0

这真的是3个不同的问题:

我想知道如果该目录不是包,您是否可以从不是本地目录的目录中使用 python 中的 import 语句

是的你可以。

另外,系统路径上的所有目录都必须是包吗?

不,他们没有。

如果在系统路径中添加相对路径,它与什么相关?

相对于当前工作目录。

于 2013-01-27T21:15:16.957 回答