2016-04-29 18 views
1

我開發Python工具。每個工具都是編程項目的一部分,包含源文件和腳本以啓動程序。這裏的語言是Python,但可以是其他語言。使用設置環境組織python項目

src/ 
    package1/ 
    module1.py 
    package2/ 
    module2.py 
scripts/ 
    program1.py # parses arguments; uses modules; starts workflow. 
    program2.py 
    pylauncher.sh # sets environment; deals with output; calls any specified python script. 

每個Python腳本都需要用戶輸入,解析提供的參數,並使用相關的Python模塊啓動例程。最終用戶只要擁有調用腳本是這樣的:

$ cd path/scripts 
$ python program1.py arg1 arg2 

,或者根據翻譯版本,

$ cd path/scripts 
$ path/to/the/right/python program1.py arg1 arg2 

目前我也有一個bash腳本,pylauncher.sh,我用於設置Python路徑,Python庫,將輸入重定向到日誌等。所以用戶沒有指定這一切,必須啓動命令:

$ cd path/scripts 
$ ./pylauncher program1.py 

這是方便,因爲它向用戶隱藏環境的東西。但在我看來,也許用戶不應該打電話給發射器。所以我正在考慮擺脫Python腳本程序{1,2} .py,並將pylauncher.sh重命名爲程序{1,2} .sh。在此過程中,前一個程序{1,2} .py中使用的例程將被轉移到模塊的主函數中,或者僅移動到那裏。

項目結構將如下所示:

src/ 
    package1/ 
    module1.py 
    program1.py # parses arguments; use python modules; starts the program workflow. 
    package2/ 
    module2.py 
    program2.py 
scripts/ 
    program1.sh # sources set_environment.sh; calls program1.py 
    program2.sh # sources set_environment.sh; calls program2.py 
    set_environment.sh 

或者腳本中的文件夾讓程序{1,2}的.py:

src/ 
    package1/ 
    module1.py 
    package2/ 
    module2.py 
scripts/ 
    program1.py # parses arguments; starts the program workflow. 
    program1.sh # sources set_environment.sh; calls program1.py 
    program2.py 
    program2.sh # sources set_environment.sh; calls program2.py 
    set_environment.sh 

用戶將最終不得不使用下面的命令:

$ cd path/scripts 
$ ./program1.sh 

所以我目前使用pylauncher bash腳本的第一個解決方案,我正在考慮改用第二種解決方案。不過,我想知道其他軟件開發者的習慣,習慣和做法。你會怎麼做?你是否看到更方便的方式,對於用戶,對於開發者來說,如果可能的話,避免冗餘?任何建議和批評都是受歡迎的。

回答

1

您是否曾考慮將這些工具打包爲單個文件可執行文件?

下面是我的意思是使用pyinstaller的一個非常基本的例子,我在linux系統上,但該工具是跨平臺的並且看起來很好的文檔。

要求(建設和PIP蟒蛇頭安​​裝的軟件包)

sudo apt-get install python-dev python-pip 
sudo pip install pyinstaller 

文件建立

[email protected]|/tmp/python-executable » cat hello.py 
#!/usr/bin/env python 

if __name__ == '__main__': 
    print 'hello world' 

使用(-F標誌指示pyinstaller創建一個文件可執行文件)

[email protected]|/tmp/python-executable » pyinstaller -F hello.py 
[email protected]|/tmp/python-executable » ./dist/hello 
hello world 

doc

+0

感謝您的回答。我還沒有考慮過使用pyinstaller。 Python專屬項目可能會很有趣。現在我正在尋找組織項目的一般方法。 – kaligne

+0

@kaligne哦,我以爲這是一個python獨家項目,我想你可能想澄清原始問題中的一些觀點,以獲得更好的答案:) – kalvatn

+0

是的,我很抱歉,它不是那麼清楚。我應該刪除python標籤嗎? – kaligne