Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python包和导入_Python_Packages - Fatal编程技术网

Python包和导入

Python包和导入,python,packages,Python,Packages,我想知道,如果一个目录不是包,那么您是否可以从一个不是本地目录的目录中使用python中的import语句?另外,系统路径上的所有目录都必须是包吗?如果将相对路径添加到系统路径中,它相对于什么 这实际上是三个不同的问题: 我想知道,如果一个目录不是包,那么您是否可以从一个不是本地目录的目录中使用python中的import语句 是的,你可以 另外,系统路径上的所有目录都必须是包吗 不,他们没有 如果将相对路径添加到系统路径中,它相对于什么 相对于当前工作目录。您可以更改sys.path以获得所需

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

这实际上是三个不同的问题:

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

是的,你可以

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

不,他们没有

如果将相对路径添加到系统路径中,它相对于什么


相对于当前工作目录。

您可以更改sys.path以获得所需的所有结果

  • 可以。要添加非本地目录的目录:

    import sys
    sys.path += '/your_path/your_subpath/'  # absolute paths
    import your_package
    
    如果需要从文件系统中的任意路径加载模块,而不将其添加到sys.path,则也可以使用

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

  • 如果将相对路径添加到系统路径中,它相对于什么

    到包含用于调用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中相对路径的更多详细信息,请参见


  • 你能澄清一下你的第一句话吗?也许能给出问题的上下文吗?我正在python文件中做一个sys.path.append()。我想知道是否每次文件运行时,相同的路径都会附加到pythonpath并创建冗余。如果是这样,解决方案是否只运行一次,然后将其删除?或者…可能直接从shell中附加PYTHONPATH变量?这将永久或动态地附加路径。换句话说,我是否可以在第一次运行语句后删除该语句,并将其永久保存在Pythonpath中?它不会替换PYTHON_PATH环境变量,但会在脚本中工作。如果愿意,您可以稍后将其从sys.path列表中删除,它只是一个列表,一个与您的脚本寿命一样长的对象。因此,如果运行一次,sys.path列表将永久更改,正确吗?除非我选择从列表中删除它。。。?如果我不从文件中删除append语句并继续运行它,它会继续使用相同的路径追加列表并创建冗余吗?不会。假设sys.path为空,并且脚本会动态添加路径。下次运行脚本时,Sys.path将再次为空,脚本将添加同一路径一次。脚本范围外没有永久性更改:PYTHON_路径将保持不变