首页 >后端开发 >Python教程 >从同级包导入时如何避免'sys.path”黑客攻击?

从同级包导入时如何避免'sys.path”黑客攻击?

Patricia Arquette
Patricia Arquette原创
2024-12-09 12:10:13200浏览

How to Avoid `sys.path` Hacks When Importing from Sibling Packages?

解决同级包导入问题


从命令行运行脚本时,从同级包导入模块通常会带来挑战。为了缓解这些困难,我们提出了一种替代解决方案,消除了笨拙的 sys.path.insert hacks 的需要。


该方法


我们将将我们的代码打包到一个文件夹中并将其结构为如下:


<br>└── myproject</p>
<pre class="brush:php;toolbar:false">├── api
│   ├── api_key.py
│   ├── api.py
│   └── __init__.py
├── examples
│   ├── example_one.py
│   ├── example_two.py
│   └── __init__.py
├── LICENCE.md
├── README.md
└── tests
    ├── __init__.py
    └── test_one.py


此外,我们将创建一个 pyproject。根文件夹中的 toml 文件来描述package.


安装包


为了使我们的包可用于导入,我们将使用 pip 以可编辑状态安装它: p>

pip install -e .

处理导入


当从我们的包中导入模块时,我们将在导入前添加 myproject. 前缀,如 test_one.py 中所示:< ;/p>

从 myproject.api.api 导入function_from_api

请注意,只有对于没有 pyproject.toml 文件和 pip install 就无法工作的导入,此前缀才是必需的。


运行脚本


完成所有必要的设置后,我们可以从命令行:


python .myprojectteststest_one.py

这应该输出预期的结果:


我是返回值api.api!

结论


通过合并这些步骤,我们已经有效解决了同级包导入的问题,现在可以从命令行,无需求助于 sys.path hacks。

以上是从同级包导入时如何避免'sys.path”黑客攻击?的详细内容。更多信息请关注PHP中文网其他相关文章!

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