Python包和导入

时间:2013-01-27 20:50:22

标签: python packages

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

2 个答案:

答案 0 :(得分: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中运行。这两个示例都确保相对路径符合您的意思,无论操作系统

    另请参阅this post以获取有关python

  4. 中相对路径的更多详细信息

答案 1 :(得分:0)

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

  

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

是的,你可以。

  

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

不,他们没有。

  

如果添加系统路径的相对路径,它相对于什么?

相对于当前的工作目录。

相关问题