python - 如何在 Python 中导入包
问题描述
我的项目空间是这样的:
Project
Functions_Folder/
__init__.py
Folder1/
__init__.py
Function1.py
Function2.py
Function3.py
Folder2/
__init__.py
Function4.py
Function5.py
Function6.py
Codes_Folder/
script1.py
script2.py
我需要导入 and 的script1.py
一些函数,Folder1
但是Folder2
这些函数也必须在同一目录中导入函数,我的意思是,例如Function4.py
必须导入Function6.py
和Function3.py
请帮忙。
解决方案
您可以使用相对导入
├── test
│ ├── __init__.py
│ ├── a
│ │ ├── one.py
│ │ └── two.py
│ └── b
│ ├── __init__.py
│ └── one.py
└── test.py
其中one.py
模块中的文件a
很简单
from .two import a_two
def a_one(i):
return 10*a_two(i)
模块中的two.py
文件a
是
def a_two(i):
return 5*i
模块中的one.py
文件b
是
from ..a.one import a_one
def b_one(i):
return a_one(i)
行from ..a.one import a_one
和from .two import a_two
使用相对导入。
整个模块可以通过运行test.py
文件进行测试,即
from test.b.one import b_one
print(b_one(1))
至于test
在脚本中导入模块的问题,在macOS和linux下,需要为模块设置PYTHONPATH
为.bashrc
test
export PYTHONPATH=the_path_to_module_test:$PYTHONPATH
推荐阅读
- java - 我应该在文本文件中打印一堆节点,但它只打印一个数字
- html - Xpath:从href标签中提取链接
- android - 如何设置自定义对话框背景暗淡?
- apache - 如何在文档根目录外的别名目录中使用 .htaccess 使用重写规则
- kdb - 根据表中多个列的条件更新 KDB 表中的列
- python - 启用以运行 Scrapy 项目
- protocol-buffers - 如何从 protobuf 文件生成 OpenAPI 3 文档
- google-sheets - 如何根据工作表中的两个单独列计算一列中的唯一值
- node.js - JSON 中意外的令牌 < 位置 0 图像上传问题
- python - PySpark:使用无值计算行聚合