2017-05-19 147 views
0

我在Python中攀登我的學習曲線,並試圖理解將所有東西放在哪裏。Python:在兩個模塊之間共享模型代碼

我原本在一個文件夾中有一個python模塊,然後是一個子文件夾src,在這個src文件夾中我將會有我的主要源文件說main.py然後我將有模型文件夾存儲我的模型代碼。

/myproject/src/main.py 
/myproject/src/models/a-model.py 
/myproject/src/models/b-model.py 

所以我主要將導入模型是這樣的:

from models.a-model import a 

然後,當我打包壓縮文件我只是壓縮與文件夾結構的myproject文件夾和部署,一切都很好。

現在我有另一個新的模塊做不同的事情,但需要使用相同的模型。

我可以很容易地複製它們並單獨編碼和部署。但是我想將這些代碼分享給模型,這樣當一個模型發生變化時,我只需要更新一次,而不是兩個地方。

我的新模塊就像

/mynew/src/main-b.py 
/mynew/src/models/a-model.py 
/mynew/src/models/b-model.py 

什麼是做到這一點的最佳做法?

我會這樣嗎?

/myproject/src/main.py 
/mynew/src/main-b.py 
/models/a-model.py 
/models/b-model.py 

然後更新導入?

但我懷疑我該如何部署?我是否也必須設置相同的文件夾結構?

+0

將包含'models'包的目錄路徑添加到運行任一項目代碼的環境的'PYTHONPATH'變量中。然後'from models import ...'會找到它們。 – schwobaseggl

+0

@StevenYong你使用Pydev作爲你的IDE嗎? – direprobs

+0

否@direprobs,爲什麼? –

回答

1

可以將/myproject/src/models添加到環境變量PYTHONPATH。 Python將PYTHONPATH環境變量中列出的目錄添加到sys.path,這是Python在您嘗試導入內容時搜索的目錄列表。這是不好,,因爲修改PYTHONPATH有其自身的副作用,幸運的是,虛擬環境提供了一種方法來解決這些副作用。

或者和更好的,你可以添加模塊來site-packages目錄,site-packages添加到sys.path中by default, this obviates the need to modify PYTHONPATH . To locate the站點packages`目錄,指的是從Python文檔此頁:Installing Python Modules (Legacy version)

您也可以使用LiClipse IDE,其中已安裝PydevCreate source a folder from the IDE並將您之前的項目與您的較新項目關聯。當您鏈接項目時,IDE會將舊項目的源文件夾添加到新項目的PYTHONPATH,因此Python將能夠找到您的模塊。