首页 >后端开发 >Python教程 >如何在不使用'sys.path”黑客的情况下从同级包导入?

如何在不使用'sys.path”黑客的情况下从同级包导入?

Linda Hamilton
Linda Hamilton原创
2024-12-08 15:56:13270浏览

How to Import from Sibling Packages Without Using `sys.path` Hacks?

同级包导入:避免 sys.path 黑客攻击的解决方案

从同级包导入可能会给组织代码库带来挑战。虽然 sys.path.append hack 提供了一种解决方法,但还有一种更优雅的解决方案,可以消除这些侵入性插入的需要。

步骤:

  1. 创建 pyproject.toml文件:
    在 pyproject.toml 中定义包元数据和依赖项文件。
  2. 使用虚拟环境:
    通过创建虚拟环境将项目与系统依赖项隔离。
  3. 以可编辑状态安装项目:
    使用 pip 和 -e 标志以可编辑状态安装包,确保自动进行更改反映。
  4. 修改导入:
    前置 myproject。之前失败的导入,例如 from myproject.api import function_name.

示例:

考虑以下文件结构:

  • api/api.py
  • examples/example_one.py
  • 测试/测试_one.py
  • pyproject.toml

api.py:

def function_from_api():
    return 'I am the return value from api.api!'

test_one.py:

from myproject.api.api import function_from_api

def test_function():
    print(function_from_api())

if __name__ == '__main__':
    test_function()

至运行 test_one.py,确保 myproject 以可编辑状态安装。然后,执行:

python myproject/tests/test_one.py

你应该看到输出:“I am the return value from api.api!”。

结论:

这个方法允许你从同级包导入,而无需求助于像 sys.path.append 这样的黑客解决方案。通过利用 pyproject.toml 和可编辑安装,您可以维护干净且模块化的代码库,同时促进轻松的扩展和测试。

以上是如何在不使用'sys.path”黑客的情况下从同级包导入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn