当我进行导入时,我对python项目中的包结构有一些疑问
这些是一些惯例
python-irodsclient_API = Project Name
我为每个文件定义了python包,在这种情况下如下:
python-irodsclient_API/config/
python-irodsclient_API/connection/
这些包很好地定义为包而不是目录吗?
我有文件 python-irodsclient_API/config/config.py
,其中我已经定义了一些与我的服务器连接的配置常量:
我有 python-irodsclient_API/connection/connection.py
文件:
在上一张或上一张图片中(以红色突出显示)..这是导入文件的正确方法吗?
我觉得这种方式的感觉并不好。 我知道"进口"应该是亲戚而不是绝对(对于路径而言),这是必要的用途"。"相反" *" 在我的情况下,我不知道这是否可以应用于我在图形中做的事情。
感谢您的帮助和指导 最诚挚的问候
答案 0 :(得分:1)
Python module docs中有一个很好的教程,解释了如何在结构化文件夹下引用包。
基本上,from x import y
,其中y
是子模块名称,允许您使用y.z
代替x.y.z
。
答案 1 :(得分:1)
这里有2个选项:
1)使你的项目成为一个包。由于您的connection
和config
包似乎是相互依赖的,因此它们应该是同一包中的模块。要实现此目的,请在__init__.py
文件夹中添加python-irodsclient_API
个文件。现在,您可以使用相对导入将config
导入connection
,因为它们属于同一个包:
from ..config import config
..
部分意味着从包结构中的上一级导入(类似于..
在Unix中的父目录的方式)
2)如果您因某种原因不想让python-irodsclient_API
包裹,那么第二个选项是将该文件夹添加到PYTHONPATH。您可以根据Tony Yang的回答动态执行此操作,或者从bash命令行执行此操作,如下所示:
export PYTHONPATH=$PYTHONPATH:/path/to/python-irodsclient_API
答案 2 :(得分:0)
我可以调用sys模块来附加python-irodsclient_API路径。
import sys
sys.path.append('C:\..\python-irodsclient_API')
当您操作connection.py并想要调用配置时,它可以成功。