[英]How to create a shareable python distribution package that can be installed using pip?
[英]How to create a CLI in Python that can be installed with PIP?
您可以使用setuptools
執行此setuptools
一個不錯的setup.py
示例(假設您的包需要 pandas 和 numpy):
import setuptools
setuptools.setup(
name='myscript',
version='1.0',
scripts=['./scripts/myscript'],
author='Me',
description='This runs my script which is great.',
packages=['lib.myscript']
install_requires=[
'setuptools',
'pandas >= 0.22.0',
'numpy >= 1.16.0'
],
python_requires='>=3.5'
)
您的目錄應設置如下:
[dkennetz package]$ ls
lib scripts setup.py
里面的 lib 將是:
[dkennetz package]$ ls lib
myscript
myscript
內部將是:
[dkennetz package]$ ls lib/myscript
__main__.py
__init__.py
helper_module1.py
helper_module2.py
main 將用於調用您的函數並執行您想做的任何操作。
內部腳本將是:
[dkennetz package]$ ls scripts
myscript
myscript
的內容是:
#!/usr/bin/env bash
if [[ ! $@ ]]; then
python3 -m myscript -h
else
python3 -m myscript $@
fi
然后運行你做: python setup.py install
這將安裝您的程序以及您在 setup.py 中的install_requires=[]
中包含的所有依賴項,並將myscript
作為命令行模塊安裝:
[dkennetz ~]$ myscript
使用console_scripts
掛鈎到特定的 Python 方法(不調用整個可執行文件), setup.py
文件:
from setuptools import setup
setup(
...
entry_points = {
'console_scripts': ['mybinary=mymodule.command_line:cli'],
},
name='mymodule',
...
)
command_line.py
腳本將是:
import mymodule
def cli():
print("Hello world!")
項目目錄如下所示:
myproject/
mymodule/
__init__.py
command_line.py
...
setup.py
假設您在 bash shell 中並且安裝了 python 3 並且您希望能夠執行您的請求,您需要將腳本文件的路徑附加到您的主目錄中的.bash_profile
文件中的 PATH 變量。 此外,在您的 python 腳本文件中,您需要將類似於以下內容的內容作為腳本的第一行:
#!/usr/bin/env python3
此外,您可以從腳本文件中刪除擴展名 (.py),例如,在我上面的示例中,與 script.py 相比,文件名是一個腳本。
您還需要將文件名的權限設置為
chmod 755 文件名
如果您希望腳本可在系統范圍內訪問,則需要修改 /etc/profile 並添加到文件底部:
export PATH=$PATH:/path/to/script
或者,如果您將 python 腳本文件移動到/usr/local/bin
,則可能不需要進行任何配置文件更改,因為該目錄通常已在 PATH 中。
要查看 PATH 的值,請在 shell 中發出以下命令
echo $PATH
我知道這個問題比較老,對於使用setuptools
的項目,肯定會使用Tombart 的答案
也就是說,我一直在使用詩歌,並且使用.toml
文件,如果這就是你使用的,因為這可能是其他人會搜索的內容,這就是你如何 package 一個帶有 toml 文件的腳本(至少帶有詩歌)
[project.scripts]
myscript = "mybinary=mymodule.command_line:cli"
不確定這是否適用於 flit 或任何其他 package 經理,但它適用於詩歌
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.