2
說我寫了模塊foo.py
。將Python模塊安裝爲模塊和腳本
我想安裝過程中foo.py
複製到prefix/lib/pythonX.Y/site-packages
,以便它可以被其他模塊進口,而且在prefix/bin/
指向foo.py
創建一個名爲foo
符號鏈接(不foo.py
)。
如何告訴distutils
這樣做?
說我寫了模塊foo.py
。將Python模塊安裝爲模塊和腳本
我想安裝過程中foo.py
複製到prefix/lib/pythonX.Y/site-packages
,以便它可以被其他模塊進口,而且在prefix/bin/
指向foo.py
創建一個名爲foo
符號鏈接(不foo.py
)。
如何告訴distutils
這樣做?
如果您使用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
通常,我會讓模塊提供一個'main'函數。然後編寫一個單獨的腳本,輸入'foo'並調用main ... – mgilson
@mgilson這似乎是一個關於如何指示[distutils](http://docs.python.org/2/distutils/)設置的問題如上所述符號鏈接,而不是如何編寫代碼,以便它可以作爲模塊和腳本運行。 –
@qwrty - 也許。但是我描述的方式是用distutils來完成這種事情的典型(而且最支持的)方式,而不是強迫這兩件事情成爲相同的腳本,而這可能會更加困難。 – mgilson