我们有一堆代码被可怕地拼凑在一起用于临时本地执行。我已经开始重构它,并希望分阶段进行。
作为第一步,我想将我们的代码放入一个漂亮的包结构中:
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 安装,所以我建议
- 使用
pip install --user -e .
:这会将您的项目符号链接(symbolic link)到~/.local/lib/pythonVERSION/site-packages
中,但会编辑您的项目都考虑在内。 - 将 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/