2016-07-29 103 views
0

過去幾天這個問題一直令我瘋狂。Python:是否可以從多個外部庫中創建一個包?

所以基本上,我試圖將一個純Python項目移植到一個合適的PyCharm項目。這基本上可以提高代碼質量和項目結構。

我希望它基本上創建一個virtualenv來容納一切,但事實並非如此簡單。該項目最終將由多位開發人員以Git作爲源代碼控制同時開發,默認庫將被修改爲。我認爲這意味着圖書館應該最終由Git進行追蹤。就我所知,Virtualenv在這裏不應該有任何幫助,因爲它不能在系統之間移植(或者至少還在測試中)。

該項目將在未來部署到Centos服務器。

所以我能想到的唯一方案就是將所有庫(使用pip install -t Libraries <ExampleLibrary>完成)簡單引入到一個文件夾中,裏面有一個__init__.py,並使用它們從其他python文件作爲Pycharm項目中的一個包。

這是可能的/推薦?我嘗試過各種方法來引用這些庫,但它們在運行時都不起作用。不知何故,當庫中的文件從他們自己的包中導入別的東西時,會引發一個ImportError,說沒有這樣的模塊。

也會接受任何其他建議。

使用Pycharm社區版。

編輯:經過一個良好的夜間休息後,我認爲問題的癥結實際上只是項目組織。在將它移植到Pycharm之前,該項目按預期工作,但它具有根目錄中的所有python文件和根目錄子文件夾中的庫,每個項目文件具有相同的樣板代碼: import os, sys absFilePath = os.path.dirname(os.path.abspath(__file__)); sys.path.insert(1, absFilePath + "/lib")

我希望通過使用Pycharm來幫助我充實軟件包,我可以避免重複樣板代碼。

+0

爲什麼你要修改你的依賴?這通常會導致你的問題......你可以繼承它們並添加/修改你想改變的功能嗎?如果你絕對需要供應商的東西,看看在他們的回購有它自己的幾個包的版本的請求庫。 (如果你正在修改依賴關係,它們必須從一開始就在git中!) –

+0

我的修改只是一些庫函數中的一行,他們不應該打破結構,我想呢?你從圖書館繼承的建議是我沒有想到的,但是我不知道如果我朝那個方向前進,我會如何做出我想做的改變。 是的,在將項目移植到Pycharm之前的原始計劃是將這些庫放在項目文件夾旁邊的git倉庫中。但是現在我只想要一個更好的項目結構,因爲以前,所有東西都在根文件夾中,這使得事情變得混亂。 –

+0

如果你的代碼質量不是很好,你可能想閱讀如何解決*那*。添加一個IDE不太可能會奇蹟般地修復你的任何問題,甚至像Pycharm一樣好。 –

回答

0

注意:沒有完整的解決方案。

下面添加的模板代碼強制包含代碼的文件與libs文件夾位於同一目錄中。

對於Pycharm,我所要做的就是將libs文件夾標記爲源文件夾。即使將模板代碼添加到文件中,修改後的庫仍可按預期工作。

對於Python Shell中,仍然需要這個模板代碼:

import os 
import sys 

absFilePath = os.path.dirname(os.path.abspath(__file__)) 
sys.path.insert(1, absFilePath + "/lib") 
相關問題