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

标签 python pip package

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

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

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 中,以及如何使 pip 工作正常工作......所以要避免任何重大问题,目前,我还希望能够 git 克隆存储库并以某种方式调用 $ pythonerrorness_with_importables_but_also__main__.py 并让它像以前一样工作。有没有一种好方法可以从我新发现的 pip 包结构中运行我的 python if __name__ == "__main__":s?

最佳答案

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

/path/to/Project

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

  1. 使用 pip install --user -e .:这会将您的项目符号链接(symbolic link)到 ~/.local/lib/pythonVERSION/site-packages 中,但会编辑您的项目都考虑在内。
  2. 将 main 函数移动到 project/__main__.py 中,以便可以从命令行以 python -m project 安装 https://packaging.python.org/distributing/#console-scripts 时,使用 console_scripts 选项将可执行文件安装在 PATH

关于python - 使 cli python 代码与包管理器兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42213255/

相关文章:

python - 为什么 pip 在我的虚拟环境之外安装一个包?

python - Pip install killed - 内存不足 - 如何绕过它?

dependencies - 包缺少库的依赖项 - OpenWRT

Java 类范围和库

python - MySQL更新不更新

python - 无法解决ImportError : No module named request

python - pyinstaller 没有为树莓派预定义的编译器

r - 如何防止 R 加载包?

python - 计算/可视化 Tensorflow Keras Dense 模型层与输出类的相对连接权重

python - 我需要使用 apache 或 nginx 来托管服务器吗?