关于python:python3框架,它有自己的包,并与git共享:如何处理sys.path和 __init__.py文件?

Python3 framework with own packages and shared with git: How to handle sys.path and __init__.py files?

我开始在python 3中构建数据处理框架。目标是开发自己的包并编写示例代码来使用包。该框架将由Git与其他研究人员共享(任何可能开发的)。

在多台计算机上处理搜索路径的最佳方法是什么?目录中的uuu init_uuuu.py文件应该是什么样的?

我正在考虑使用sys.path.append(os.getcwd())或sys.path.append("…")添加相对于主目录的sys.path(python:相对于当前运行脚本添加到sys.path的最佳方法)。我不知道这是不是一个好的方法来导入不同的绝对路径和操作系统的不同机器的顶级之外。(超顶级包错误/问题:相对导入中的超顶级包错误)

基本目录结构可能是(稍后我将添加更多包和处理函数):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
main_directory/
main_directory/__init__.py
main_directory/packages/
main_directory/packages/__init__.py
main_directory/packages/preprocessing/
main_directory/packages/preprocessing/filters.py    #implementation of multiple classes: e.g. fillter1 and filter2
main_directory/packages/preprocessing/__init__.py
main_directory/packages/postprocessing/
main_directory/packages/postprocessing/filters.py   #implementation of multiple classes: e.g. fillterA and filterB
main_directory/packages/postprocessing/__init__.py
main_directory/examples/
main_directory/examples/easy_example.py #file with examples to use the filters
main_directory/your_code/
main_directory/your_code/your_code.py   #file with your code to use the filters

有一个标准的包布局。如果你遵循这一点,你可以在不需要触摸sys.path的情况下部署你的程序。

使用此网站上的资源并学习安装工具。

https://packaging.python.org/tutorials/packaging-projects/

更新

在开发过程中,您可以使用虚拟环境。首先创建一个:

1
$ virtualenv venv

使用-e安装包将创建指向目录的链接。

1
$ venv/bin/pip install -e yourproject.git

当您在虚拟环境中启动python时,导入应该可以工作。

1
2
3
$ venv/bin/python
>>> import preprocessing.filters
>>>