问题描述
我们有一堆代码被可怕地放在一起用于临时本地执行。 我已经开始重构它,并希望分阶段进行。
作为第一步,我想将我们的代码放入一个漂亮的包结构中:
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?
1楼
鉴于您的包是纯 Python,关键部分是
/path/to/Project
位于 Python 路径中,通过PYTHONPATH
环境变量或对sys.path
的操作。
但是,这不是我推荐的解决方案。
由于您已经小心地使您的软件包可安装,我建议
-
使用
pip install --user -e .
:这将在~/.local/lib/pythonVERSION/site-packages
符号链接您的项目,但会考虑对您的项目进行的编辑。 -
移动
project/__main__.py
的 main 函数,以便它可以作为python -m project
从命令行执行,或者在安装时使用console_scripts
选项将可执行文件安装在PATH