在同一项目的不同子目录中导入python模块和包
我想找出一种最干净、最好是自包含的方式来在脚本中使用我的包,这些脚本与包本身位于不同的目录中 示例问题如下所示:在同一项目的不同子目录中导入python模块和包,python,structure,project,project-structure,project-structuring,Python,Structure,Project,Project Structure,Project Structuring,我想找出一种最干净、最好是自包含的方式来在脚本中使用我的包,这些脚本与包本身位于不同的目录中 示例问题如下所示: lib中的模块既需要导入,也需要作为脚本运行 我的项目目录如下,我有两个问题: 在lib/api.py中,我想在调用或导入api.py时正确读取data\u文件/key.txt 在testing_script.py中,我想导入并使用lib/get_data.py 我似乎找不到一个干净的方法来做这件事,这是否意味着我的项目是以一种非python的方式构建的 谢谢你的帮助 my-proj
lib
中的模块既需要导入,也需要作为脚本运行
我的项目目录如下,我有两个问题:
lib/api.py
中,我想在调用或导入api.py
时正确读取data\u文件/key.txt
testing_script.py
中,我想导入并使用lib/get_data.py
my-project-git
├── LICENSE
├── README.md
├─── my_project
│ ├── data_files
│ │ ├── key.txt
│ │ ├── mappings.csv
│ ├── lib
│ │ ├── __init__.py
│ │ ├── api.py
│ │ └── get_data.py
│ └── test
│ ├── __init__.py
│ └── testing_script.py
├── requirements.txt
└── setup.py
据我所知,没有一种类似于python的方式来组织你的项目 这是Kenneth Reitz在2013年推荐的,也是我使用它的方式:
README.rst
许可证
setup.py
requirements.txt
sample/__init__.py
sample/core.py
示例/helpers.py
docs/conf.py
docs/index.rst
测试/测试_basic.py
测试/测试_advanced.py
在sample
(my_project
在您的案例中)中,您可以根据自己的喜好进行分类。例如UTIL(通用函数)、数据库(读、写)、视图(用户命令)等。这取决于您的项目
至于在同一级别调用模块,您应该在顶级层次结构模块的\uuuu init\uuuu
文件中定义它们,在本例中,该模块是sample
例如:
\uuuu init\uuuu
在我的项目中
从sample.core导入_类
从sample.core导入一个函数
从sample.core导入任何内容
然后从/test/test_basic.py
执行以下操作:
从示例导入一个\u类
#或进口样品
a=a_Class()#使用core.py中的类
#或a=sample.a_Class()
看看示例模块存储库:我提出了一个答案。PS:
lib
通常用于第三方库或C(或其他)语言库。