Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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_Package - Fatal编程技术网

python相对导入中的问题

python相对导入中的问题,python,package,Python,Package,我正在windows上使用以下目录结构运行以下项目 Project\Src\Lib\General\Module_lib.py Project\Src\executables\example.py 现在,我想在example.py中导入Module_lib.py。。请帮我解决这个问题 example.py的内容: from ..lib.general.Module_lib import Module_lib 输出: Value Error : Attempted relative i

我正在windows上使用以下目录结构运行以下项目

Project\Src\Lib\General\Module_lib.py  
Project\Src\executables\example.py
现在,我想在
example.py
中导入
Module_lib.py
。。请帮我解决这个问题

example.py的内容

from ..lib.general.Module_lib import Module_lib  
输出:

Value Error : Attempted relative import in non-packages

实现这一点的最佳方法是什么?

Project\Src\Lib\General
添加到PYTHON\u路径中,以便运行时可以找到它。这是我能想到的唯一真正方便的解决办法

您可以在此处找到添加python路径的方法:

也可以在脚本中执行此操作:

import sys
sys.path.append(os.path.dirname(__file__))
这不会立即生效,因为
dirname
调用是针对当前文件的。要解决这个问题,您可以多次调用它以向上移动目录。我希望这足够清楚

dir1 = os.path.dirname(__file__)
dir1up = os.path.dirname(dir1)
dir1upup = os.path.dirname(dir1up)

您需要定义PYTHONPATH环境变量,以便它包含希望Python在其中查找模块的所有目录。假设源代码树位于C:驱动器的根目录中,则有两个选项:

  • 将所有叶目录添加到PYTHONPATH并直接导入模块,例如:

    set PYTHONPATH=C:\Project\Src\Lib\General
    
    在这种情况下,您可以直接导入模块:

    import Module_lib
    
  • 通过添加名为
    \uuuu init\uuuuu.py
    的空文件来创建目录包,这样您就可以使用限定名称导入模块,并且可以将更少的目录添加到PYTHONPATH。你可以这样做:

    set PYTHONPATH=C:\Project\Src
    
    在这种情况下,您可以使用合适的限定名称导入模块:

    import Lib.General.Module_lib
    
    要实现这一点,您需要将名为
    \uuuu init\uuuu.py
    的空文件添加到C:\Project\Src\Lib和C:\Project\Src\Lib\General目录中


  • 好吧,这取决于系统。你在运行什么操作系统?但我需要在我的脚本中运行。。这样,当我在多台PC上运行这些脚本时,就不会有依赖关系了