栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python setup.py的基本用法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python setup.py的基本用法

参考:https://www.jianshu.com/p/9a5e7c935273

from setuptools import setup, find_packages

# 最主要的方法就是这个⬇️,给它加上不同的参数
setup(**setup_args)

# argument example:
setup(
	name='greeting_pkg',		# 在 pip 中注册的名字(如果我们将这个 package 分享到 PyPI,必须保证这个名字与 PyPI 中已有 package 注册的名字不重复)
    packages=find_packages()	# 也是setuptools里的方法,作用先不管
    version='0.1.0'				# 不写的话pip list出来会显示默认的0.0.0
    install_requires=[          # 这个package需要依赖的其他package,写在这里会自动安装
        'PyYAML',
        'pandas==0.23.3',		# 指定依赖版本的写法
        'numpy>=1.14.5',
    ],
    extras_require={       		# 可选的依赖,可以通过"pip install -e .[interactive]"来安装
        'interactive': ['matplotlib>=2.2.0,<3.0.0', 'jupyter']
    }
)
在命令行中执行 module 中的函数

如果我们希望 module 中的函数不仅仅只是被其他 python 程序通过 import 调用,还可以直接在命令行中执行,那么可以做如下修改:(设置参数entry_points里的’console_scripts’)

# greeting_module.py
import pyjokes

def greeting_func(name):
    print("Hello,", name)
    print("Here is a joke for you:n", pyjokes.get_joke())

def main():
    import sys
    arg = sys.argv[1]
    greeting_func(arg)
# setup.py 
from setuptools import setup, find_packages

setup(
	# ...,
    entry_points={       # 设置了在命令行中如何使用greeting_module中的main函数
        'console_scripts': [
            'greeting=greeting_pkg.greeting_module:main'	# =.:
        ]
    }
)

执行:

$ greeting "De Gang"
Hello, De Gang
Here is a joke for you:
 3 Database Admins walked into a NoSQL bar. A little while later they walked out because they couldn’t find a table.
package_data

这个参数是用来include一些非.py文件

  • 例子:
    Suppose we have a schema.json in our project, which we place in exampleproject/data/schema.json.
    If we want to include this in our package, we must use the package_data argument of setup:
setup(
    # ...,
    package_data={
    	'exampleproject': [		# 这个是sub-package的名字
   			'data/schema.json'
   		]
    }
)
MANIFEST.in

这个里面也是用来include一些non-python文件。
用法:
上例中的exampleproject/data/schema.json,如果要通过MANIFEST.in来打包进去:

include exampleproject/data/schema.json

它的效果可以和package_data一样,但是这两者在逻辑上是用来include不同作用的文件。
我的理解:manifest包含一些README.md、package.json这些“项目结构”用的文件,package_data包含的是代码里实际用到的文件,如数据、文本等。
(下面的解释是抄来的)
MANIFEST 控制 sdist 包含的内容, package_data控制bdist包含的内容。
MANIFEST.in 用来给源文件打包, 里面包含许多额外的信息, 比如测试文件之类的。

package_data用于指定安装时加入的额外的文件, 不需要再MANIFEST.in中重复定义, 源文件打包的时候回自动包含这里面的文件。

以下都是描述性参数:
from setuptools import setup, find_packages

setup(
   ...
   # metadata to display on PyPI
    author="Me",
    author_email="me@example.com",
    description="This is an Example Package",
    keywords="hello world example examples",
    url="http://example.com/HelloWorld/",   # project home page, if any
    project_urls={
        "documentation": "https://docs.example.com/HelloWorld/",
        "Source Code": "https://code.example.com/HelloWorld/",
    },
    classifiers=[
        'License :: OSI Approved :: Python Software Foundation License'
    ]
)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665055.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号