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

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

Linda Hamilton
发布: 2024-12-08 15:56:13
原创
253 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板