具有依赖项的脚本的python结构?

具有依赖项的脚本的python结构?,python,packages,directory-structure,Python,Packages,Directory Structure,我有一个python项目设置,如下所示: monitoring |\__helper_functions | - init.py | - helpers.py | |\__docs | |\__monitoring_scripts | |\__CLI_interfacing_scripts | \__event_handling_scripts 基本上有一些python脚本和一些帮助文件。我希望这些是由另一个程序调用的可执行文件。这些脚本都引用了helper函数。

我有一个python项目设置,如下所示:

monitoring
|\__helper_functions
|        - init.py
|        - helpers.py
|
|\__docs
|
|\__monitoring_scripts
|
|\__CLI_interfacing_scripts
|
 \__event_handling_scripts
基本上有一些python脚本和一些帮助文件。我希望这些是由另一个程序调用的可执行文件。这些脚本都引用了helper函数。但是,由于它们都位于与根文件夹分开的子目录中,我不确定如何引用它们。在PyCharm中,每个子目录都有自己的
\uuuu init\uuuuu.py
,但我不确定这是否正确

我可以移动根目录中的所有脚本,并在helper和根目录中创建init.py,然后导入脚本。我想这样做的唯一原因就是为了将来能把它拆散

我希望它的用途基本上是,有人可以下载这个文件夹,并配置接口应用程序指向它,该应用程序执行它需要从这个文件夹

编辑:理想情况下,我希望在每个单独的脚本中都能够编写

导入x


它会自动引用helper文件夹

你不能简单地执行导入helper\u功能。helpers还是我误解了这个问题?我建议不要将所有子文件夹导入当前范围。这将使跟踪对象到其源变得更加困难。例如,如何从导入中导入
*
是个坏主意。使用
import x
导入本地模块是不正确的。您应该始终尝试安排一些事情,以便脚本可以从mypackage import x执行
。这意味着脚本与包属于同一目录。否则,您将被迫执行
sys.path
操作以使事情正常工作。注意,谢谢大家。因此,我应该将helper转换为一个包,并在每个脚本中需要时从helper_函数导入x
。如果每种类型的脚本都位于不同的subdir中,并且helper函数也是同一级别的subdir,那么这是否意味着我需要在根目录中创建一个包?python知道在某个目录中搜索包的级别是多少?@frei。已执行脚本的目录将自动插入到
sys.path
的开头。因此,如果脚本和包位于同一目录中,那么pkg import x中的
将保证在脚本和包本身的任何其他模块中工作。您的问题是由于脚本位于不同的目录中造成的。如果它们都在
监控
目录中,那么一切都会简化。也许您应该考虑使用前缀为脚本命名空间,例如
mon_script.py
cli_script.py
,etc-而不是使用子目录?你不能简单地执行导入帮助程序功能。帮助程序
,或者我误解了这个问题吗?我建议不要将所有子文件夹导入当前范围。这将使跟踪对象到其源变得更加困难。例如,如何从导入中导入
*
是个坏主意。使用
import x
导入本地模块是不正确的。您应该始终尝试安排一些事情,以便脚本可以从mypackage import x执行
。这意味着脚本与包属于同一目录。否则,您将被迫执行
sys.path
操作以使事情正常工作。注意,谢谢大家。因此,我应该将helper转换为一个包,并在每个脚本中需要时从helper_函数导入x
。如果每种类型的脚本都位于不同的subdir中,并且helper函数也是同一级别的subdir,那么这是否意味着我需要在根目录中创建一个包?python知道在某个目录中搜索包的级别是多少?@frei。已执行脚本的目录将自动插入到
sys.path
的开头。因此,如果脚本和包位于同一目录中,那么pkg import x中的
将保证在脚本和包本身的任何其他模块中工作。您的问题是由于脚本位于不同的目录中造成的。如果它们都在
监控
目录中,那么一切都会简化。也许您应该考虑使用前缀命名脚本,例如
mon_script.py
cli_script.py
,等等,而不是使用子目录?