Python 导入包内文件-项目结构
在进行导入时,我对python项目中的包结构有一些疑问 这是一些惯例Python 导入包内文件-项目结构,python,packages,python-import,Python,Packages,Python Import,在进行导入时,我对python项目中的包结构有一些疑问 这是一些惯例 python-irodsclient\u API=项目名称 我已经为每个文件定义了python包,在本例中如下所示: python-irodsclient\u API/config/ python-irodsclient\u API/connection/ 这些包很好地定义为包而不是目录,真的吗 我有一个文件python-irodsclient\u API/config/config.py,其中我定义了一些与服务器连接的配置
python-irodsclient\u API=项目名称
我已经为每个文件定义了python包,在本例中如下所示:
python-irodsclient\u API/config/
python-irodsclient\u API/connection/
这些包很好地定义为包而不是目录,真的吗
我有一个文件python-irodsclient\u API/config/config.py
,其中我定义了一些与服务器连接的配置常数:
我有python-irodsclient\u API/connection/connection.py文件:
在上一张或上一张图像中(以红色突出显示)。。这是导入文件的正确方法吗
我觉得这样的感觉不是更好。
我知道“导入”应该是相关的,而不是绝对的(对于路径),这是必要的使用“.”代替“*”
在我的情况下,我不知道这是否可以应用于我在图形中所做的工作
我感谢你的帮助和指导
致以最诚挚的问候中有一个很好的教程,介绍了如何引用结构化文件夹下的包
基本上,
从x导入y
,其中y
是一个子模块名,允许您使用y.z
而不是x.y.z我可以调用sys模块来附加python-irodsclient\u API路径
import sys
sys.path.append('C:\..\python-irodsclient_API')
当您操作connection.py并希望调用config时,它能够成功。您在这里有两个选项:
1) 让你的项目成为一个包。由于您的连接
和配置
包似乎是相互依赖的,因此它们应该是同一个包中的模块。要实现这一点,请在python-irodsclient\u API
文件夹中添加\uuu init\uuuuuuuuuupy.py
文件。现在,您可以使用相对导入将配置
导入到连接
,因为它们是相同包的一部分:
from ..config import config
。
部分表示从包结构中的上一级导入(类似于。
表示Unix中的父目录)
2) 如果出于某种原因不想将python-irodsclient\u API
作为一个包,那么第二个选项是将该文件夹添加到PYTHONPATH。您可以根据Tony Yang的回答动态执行此操作,或者从bash命令行执行此操作,如下所示:
export PYTHONPATH=$PYTHONPATH:/path/to/python-irodsclient_API
虽然这可以回答问题,但请在此处包含答案的基本部分,并提供链接以供参考。