【问题标题】:Python Importing files from other folders (within the same project)?Python从其他文件夹(在同一个项目中)导入文件?
【发布时间】:2019-02-01 22:28:56
【问题描述】:

python 新手,不了解导入的工作原理。我看到了一些关于如何执行 sys.path.append 的内容,但我不想这样做,因为这需要进入源代码控制并运行具有不同路径的多台不同计算机。如何简单地导入位于另一个文件夹但在同一个项目中的文件?

我的文件结构是

- Project

  - FolderA
    - FileA.py

  - FolderB
    - SubfolderB
      - FileB.py

如何在 FileB.py 中导入 FileA.py?

这不起作用,因为我返回“没有名为 FolderA 的模块”:

from FolderA import FileA

class FileB():
...  

【问题讨论】:

  • 在每个文件夹中创建一个`init.py`文件,然后从那里导入函数,如from foldera import func1

标签: python import directory


【解决方案1】:

将您的子文件夹设为 python packages

确保只有根在 python 路径上。

最好使用标准布局并使用 pip -e installs

请参阅 this 以获得出色的布局。

然后使用像 import package.subpackage.module 这样的绝对导入或像 import .module 这样的显式相对导入

【讨论】:

    【解决方案2】:

    __init__.py 添加到每个目录以将它们变成包。然后就可以使用相对导入,比如在fileb.py中

    from ..FolderA import FileA
    

    请参阅Relative imports for the billionth time 以获取有关相对导入以及它们如何在 python 中工作的详细说明。

    【讨论】:

    • 当我现在执行此操作时,我收到一条错误消息“exceptions.Value Error, Attempted relative import in non-package”
    • 您是在 FolderB 中执行 FileB.py 吗?
    • 我正在使用 Visual Studio 代码,只是在选择 FileB.py 的情况下调试测试。
    • 查看我的更新答案,了解相对导入的工作原理。
    猜你喜欢
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    相关资源
    最近更新 更多