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 将与其他研究人员共享(任何可能开发的)框架。

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

我正在考虑添加 sys.path 相对于 main_directory (Python: Best way to add to sys.path relative to the current running script) with sys.path.append(os.getcwd()) or sys.path.append(".."). I don’t know if this is a good way to import beyond top level on different machines with different absolute paths and operation systems. (The beyond top level package error/problem: beyond top level package error in relative import)

基本的目录结构可能是(后面会添加更多的包和处理函数):

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/

更新

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

$ virtualenv venv

使用 -e 安装您的软件包会在您的目录中创建一个 link。

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

当您在虚拟环境中启动 python 时,您的导入应该会起作用。

$ venv/bin/python
>>> import preprocessing.filters
>>>