【问题标题】:Python use basic code across folders [duplicate]Python跨文件夹使用基本代码[重复]
【发布时间】:2018-04-24 01:58:07
【问题描述】:

我有目录结构的python代码 -

main.py
basics.py
component1
  file1.py
  file2.py
component2
  file1.py
  file2.py

我希望目录 component1 和 component2 中的代码使用 basics.py 中的代码。这样做最pythonic的方式是什么?

谢谢!

【问题讨论】:

  • 您可以选择使用相对导入或从代码更新 sys.path 中添加 basics.py 的位置。我更喜欢创建另一个名为 lib 或 utils 的目录,将 basics.py 移到那里,添加 init.py,将 PYTHONPATH 更新到父目录,然后导入。从 lib.basics import foo、from component1.file1 import bar 等来看,导入看起来干净且一致。

标签: python


【解决方案1】:

将application 视为您的python 项目的根目录,在应用程序文件夹中创建一个空的__init__.py 文件。然后在你的目标filename.py(例如component1/file1.py)文件中,进行如下修改,得到func_name的定义:

import sys
sys.path.insert(0, r'/from/root/directory/')

from application.basic import func_name ## use '*' wildcard to import all the functions in basic.py file.

【讨论】:

    【解决方案2】:

    在component1、component2等文件的顶部

    from ..basics import class1, function2,    # or a wildcard like *
    

    【讨论】:

    • 相对导入很恶心。我宁愿看到包含 basics.py 的文件夹添加到 PYTHONPATH 并获得 __init__.py
    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2022-11-03
    • 2021-09-20
    • 1970-01-01
    相关资源
    最近更新 更多