导入包内的文件 - 项目结构

时间:2015-05-09 02:10:47

标签: python packages python-import

当我进行导入时,我对python项目中的包结构有一些疑问

这些是一些惯例

python-irodsclient_API = Project Name

我为每个文件定义了python包,在这种情况下如下:

python-irodsclient_API/config/

python-irodsclient_API/connection/

这些包很好地定义为包而不是目录吗?

enter image description here

我有文件 python-irodsclient_API/config/config.py ,其中我已经定义了一些与我的服务器连接的配置常量:

enter image description here

我有 python-irodsclient_API/connection/connection.py 文件:

enter image description here

在上一张或上一张图片中(以红色突出显示)..这是导入文件的正确方法吗?

我觉得这种方式的感觉并不好。 我知道"进口"应该是亲戚而不是绝对(对于路径而言),这是必要的用途"。"相反" *" 在我的情况下,我不知道这是否可以应用于我在图形中做的事情。

感谢您的帮助和指导 最诚挚的问候

3 个答案:

答案 0 :(得分:1)

Python module docs中有一个很好的教程,解释了如何在结构化文件夹下引用包。

基本上,from x import y,其中y是子模块名称,允许您使用y.z代替x.y.z

答案 1 :(得分:1)

这里有2个选项:

1)使你的项目成为一个包。由于您的connectionconfig包似乎是相互依赖的,因此它们应该是同一包中的模块。要实现此目的,请在__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并想要调用配置时,它可以成功。