繁体   English   中英

当我的主要脚本位于整个包的子文件夹中时,如何从python脚本导入?

[英]How do I do imports from a python script when my main scripts are in a subfolder of the whole package?

我正在尝试为项目创建一个小的文件夹结构,并且不想让事情变得过于复杂。 我想将组件分成

  • 我尝试使用的每个工具的可重用代码的文件夹
  • 主脚本文件的文件夹,我可以通过python script.py调用

所以我当前的结构看起来像这样:

project
|
  - tools
  |
    - __init__.py
    - tool_a
    |
      - __init__.py
      - file.py
      - file2.py
  |
   - tool_b
     |
      - __init__.py
|
  - start_scripts
  |
    - start_use_case_1.py
    - start_use_case_2.py

现在在start_use_case_1.py我想导入模块tools.tool_a.file 以下方法已失败:

import tools.tool_a.file

然后从文件夹project/调用python start_scripts/start_use_case_1.py 它找不到模块tools 但是,当我从交互式python shell执行相同操作时,它可以工作。

以下内容也不起作用:

from ..tools.tool_a import file

SystemError:父模块“”未加载,无法执行相对导入

我读到,不允许从__main__脚本进行相对导入。 即使我不太在意良好的样式,因为这些启动脚本是项目的重要部分。 我只是不想每次在解释器中重新输入它们。

您需要向目录添加路径,以便从任何文件中导入代码片段,这可以像这样完成:

import sys
sys.path.append("./")

现在您可以执行以下操作: from tools import tool_a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM