python相对导入中的问题
我正在windows上使用以下目录结构运行以下项目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
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:驱动器的根目录中,则有两个选项:
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上运行这些脚本时,就不会有依赖关系了