2013-12-08 70 views
2

說我寫了模塊foo.py將Python模塊安裝爲模塊和腳本

我想安裝過程中foo.py複製到prefix/lib/pythonX.Y/site-packages,以便它可以被其他模塊進口,而且在prefix/bin/指向foo.py創建一個名爲foo符號鏈接(不foo.py)。

如何告訴distutils這樣做?

+2

通常,我會讓模塊提供一個'main'函數。然後編寫一個單獨的腳本,輸入'foo'並調用main ... – mgilson

+0

@mgilson這似乎是一個關於如何指示[distutils](http://docs.python.org/2/distutils/)設置的問題如上所述符號鏈接,而不是如何編寫代碼,以便它可以作爲模塊和腳本運行。 –

+0

@qwrty - 也許。但是我描述的方式是用distutils來完成這種事情的典型(而且最支持的)方式,而不是強迫這兩件事情成爲相同的腳本,而這可能會更加困難。 – mgilson

回答

3

如果您使用setuptools entry_points,則可以執行此操作。下面是一個例子:

foo.py

def main(): 
    print "Hello world" 

setup.py

from setuptools import setup 

setup(
    name="foo", 
    version = "0.1", 
    py_modules=['foo'], 
    entry_points = { 
     'console_scripts': ['foo = foo:main'] 
    } 
) 

實施例的使用中,一旦模塊已經使用像pip一個工具安裝:

$ foo 
Hello world 
$ python -c 'import foo; foo.main()' 
Hello world