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

时间:2017-02-13 20:47:57

标签: python pip packages

我们有一堆代码,这些代码在特殊的本地执行中被大量抛出。我已经开始重构它,并希望分阶段完成。

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

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工作...所以为了避免任何重大问题,现在,我也希望能够克隆回购并以某种方式调用$ python horribleness_with_importables_but_also__main__.py并让它像以前一样工作。有没有一种很好的方法可以在我新发现的pip包结构中运行我的python if __name__ == "__main__":

1 个答案:

答案 0 :(得分:1)

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

/path/to/Project

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

  1. 使用pip install --user -e .:这会在~/.local/lib/pythonVERSION/site-packages中对您的项目进行符号链接,但会考虑对您的项目进行编辑。
  2. 移动project/__main__.py中的主要功能,以便可以从命令行执行它python -m project 使用console_scripts选项来获取可执行文件安装https://packaging.python.org/distributing/#console-scripts
  3. 时安装在PATH