2017-02-13 44 views
1

我們有一堆代碼在特別的本地執行中被可怕地扔在一起。我已經開始重構它,並且希望分階段進行此操作。使cli python代碼與包管理器兼容

作爲第一步,我希望把我們的代碼放到一個包裝精美的結構:

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

鑑於你的包是純Python,關鍵的部分是

/path/to/Project 

在Python路徑,無論是經由PYTHONPATH環境變量或sys.path操縱。但是,這不是我推薦的解決方案。正如你所採取的護理,讓您的包PIP安裝的,我建議

  1. 使用pip install --user -e .:這將符號鏈接您的項目在~/.local/lib/pythonVERSION/site-packages但編輯到項目中都考慮在內。
  2. project/__main__.py移動的主要功能,以便它可以在命令行python -m project執行使用console_scripts選項已經安裝在你的PATH安裝https://packaging.python.org/distributing/#console-scripts
當你的可執行文件