2016-01-13 24 views
0

我的目標是製作一個我已經寫好的程序,以方便潛在的僱主/等。爲了......展示我的技能......或其他。我不是一個計算機科學家,我從來沒有寫過用於安裝的python模塊,所以我是這方面的新手。在使用pip /其他安裝程序安裝之後,在python模塊中加載文本文件

我已經寫了一個機器學習算法,並將參數擬合到本地的數據。我想用「默認」參數分發算法,這樣下載者就可以在不使用訓練集的情況下將其用於「分箱」分類。我已經編寫了一些方法,將參數保存到/從文本文件加載參數,我已經在我的平臺上確認了這些參數。我可以簡單地要求用戶單獨下載我提到的文件,並使用我創建的loadParameters方法來手動加載參數,但是我想讓安裝過程儘可能簡單,以便可能評估我的人員。

我不知道如何打包文本文件,以便它們可以自動加載到我擁有的對象的__init__方法中。

我已經把算法和GitHub上here文件,並寫入一個setup.py腳本,以便它可以從GitHub使用PIP這樣下載: PIP安裝--upgrade https://github.com/NathanWycoff/SySE/tarball/master 然而,這似乎並沒有要安裝包含我需要的數據的文本文件,只需要包含我的代碼的__init__.py python文件。

所以我想這個問題歸結爲:如何強制pip下載除__init__.py中的模塊之外的其他文件?或者,有沒有更好的方法來加載默認參數?

回答

2

是的,有一個更好的方法,你如何使用python包分發數據文件。

首先,閱讀有關正確的python包結構的東西。例如,不建議將代碼放入__init__文件中。他們只是指出一個目錄是一個python包,另外你可以在那裏做一些import語句。所以,最好是,如果您將SySE類別(例如)文件syse.py放在該目錄中,並且在__init__.py中可以使用from .syse import SySE

到數據文件。默認情況下,setuptools將只分發*.py和其他幾個特殊文件(README,LICENCE等)。但是,您可以告訴setuptools您希望在軟件包中分發其他文件。使用setup的kwarg package_data,更多關於那here。另外不要忘記把你所有的數據文件包含到MANIFEST.in,更多的在here

如果您正確執行上述操作,則可以使用包pkg_resources在運行時發現數據文件。 pkg_resources可以處理所有可能的情況 - 您的軟件包可以通過多種方式分發,它可以從pip服務器安裝,也可以從滾輪上安裝,如蛋,...更多關於here

最後,如果你的軟件包是公開的,我只能推薦上傳到pypi(如果它不公開,你可以運行你自己的pip服務器)。在那裏註冊並上傳你的軟件包。你可以只做pip install syse從任何地方安裝它。這很可能是最好的方式,如何分發你的軟件包。

這是相當多的工作和閱讀,但我敢肯定,你會從中受益。

希望得到這個幫助。

+0

看起來我最好坐下來仔細閱讀所有鏈接的相關文檔。非常感謝你的幫助。 –

+0

花了我一段時間,但我終於明白了,不能夠感謝你。 –

+1

我很高興它有幫助。我也在爲此而戰...... – ziky