繁体   English   中英

将内部模块导入python中的另一个子目录的最佳做法是什么?

[英]What is best practice for importing internal modules to another subdirectory in python?

我目前有一个结构如下的项目文件夹

Project/ 
    main.py
    .gitignore
    .env
    requirements.txt
    reports/
        report1.py
        report2.py
    utils/
        __init__.py
        support_functions.py

对于这个程序,我不是想运行一个 main 函数。 我有几个每周/每月运行一次的报告,并且直接从其文件中运行它们。 我在从 utils 模块导入函数时遇到了很多麻烦 - 但是,我确实找到了堆栈溢出的解决方法,它本质上是将文件夹添加到路径

import sys
sys.path.append('/Project/utils')
import support_functions

但是,我不喜欢这种解决方法,因为它使用绝对路径,并且在我切换计算机/操作系统/环境时不起作用。 所以我的主要问题是在大型项目中如何处理? 即使我使用“正确”结构并运行主要功能,我也遇到了其他几个我想这样做的场景。

  1. 一个测试文件夹,它将从另一个模块导入函数进行测试
  2. 我想从另一个内部模块导入函数或类的任何情况
  3. 这在python中不常见吗? 我是否遗漏了一些关于建筑的明显内容?

我终于找到了答案。

解决方案:编辑您的 settings.json

"terminal.integrated.env.osx": {"PYTHONPATH": "${workspaceFolder}"}

注意 - osx 在这些操作系统上需要更改为“linux”或“windows”。

可以“使用 PYTHONPATH 变量”部分下找到有关问题和解决方案的文档。

有其他解决方案可以通过将 PYTHONPATH 设置在 .env 中,然后在 settings.json 中指向它来更改 PYTHONPATH,但是,它们都不适合我。 解决方案最终是让 VScode 将 PYTHONPPATH 指向当前工作目录,这是在 Pycharm 中自动完成的。

暂无
暂无

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

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