当前位置: 代码迷 >> python >> 使 cli python 代码与包管理器兼容
  详细解决方案

使 cli python 代码与包管理器兼容

热度:44   发布时间:2023-06-13 16:46:09.0

我们有一堆代码被可怕地放在一起用于临时本地执行。 我已经开始重构它,并希望分阶段进行。

作为第一步,我想将我们的代码放入一个漂亮的包结构中:

Project/
|
|-- project/
|   |-- code/
|   |   |-- __init__.py
|   |   |-- horribleness_with_importables_but_also__main__.py
|   |   |-- more_horribleness.py
|   |-- __init__.py
|
|-- setup.py
|-- README.md

因此,我可以在setup.py__init__.py做适当的事情,以便$ pip install git+[my_project]按预期工作并使from project.more_horribleness import *按预期工作。

但是,我现在已将所有本地导入更改为相对导入,并将导入放入__init__.py s 以及您有什么使 pip 工作的方法...所以为了避免任何重大问题,现在,我也会喜欢能够 git 克隆 repo 并以某种方式调用$ python horribleness_with_importables_but_also__main__.py并让它像以前一样工作。 if __name__ == "__main__": s 从我新发现的 pip 包结构中运行,是否有一种很好的方法来运行我的 python?

鉴于您的包是纯 Python,关键部分是

/path/to/Project

位于 Python 路径中,通过PYTHONPATH环境变量或对sys.path的操作。 但是,这不是我推荐的解决方案。 由于您已经小心地使您的软件包可安装,我建议

  1. 使用pip install --user -e . :这将在~/.local/lib/pythonVERSION/site-packages符号链接您的项目,但会考虑对您的项目进行的编辑。
  2. 移动project/__main__.py的 main 函数,以便它可以作为python -m project从命令行执行,或者在安装时使用console_scripts选项将可执行文件安装在PATH
  相关解决方案