簡體   English   中英

Python / Git /模塊結構最佳實踐

[英]Python / Git / Module structure best practice

我們有許多共享公用程序“項目”的小項目

范例
實用項目數學包含功能添加
項目A和項目B都需要math.add
項目A與項目B無關

所以擁有3個git存儲庫(project_A,project_B和math)並在本地將其克隆為一個好主意是

/SOMWHERE/workspace/project_A
/SOMWHERE/workspace/math

並在/SOMWHERE/workspace/project_A/__init__.py中有類似

import sys
sys.path.append('../math')
import math

math.add()

我已經閱讀了“ 構建項目”,但是無法處理SCM和共享模塊。

所以總結一下我的問題:是

sys.path.append('../math')    
import math

好的做法還是有一種更“ pythonic”的方式來做到這一點?

子模塊是共享模塊的次佳方式,就像您在評論中所說的那樣。 更好的方法是使用您選擇的語言(即Python)提供的工具。

首先, 創建virtualenvs來隔離每個項目python環境。 使用pip安裝軟件包並將依賴項存儲在requirements.txt文件中。

然后,您可以使用distutils為每個utils庫創建一個特定的程序包,在Pypi上共享它

如果您不希望將軟件包發布到野外,也可以托管自己的Pypi服務器

使用此設置,您將能夠使用不同版本的庫並對其進行處理,而不會破壞與舊代碼庫的兼容性。 您還將避免使用難以與git一起使用的子模塊。

您所描述的所有內容(3個項目)聽起來都不錯, 只是您不應該亂用sys.path 而是設置PYTHONPATH環境變量。

另外,如果您不了解distutils,我想您可能是python開發的新手,並且可能不了解virtualenv。 您也應該使用它(它允許您針對不包含任何軟件包或僅針對該env安裝的軟件包的“干凈” python版本進行開發)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM