..
python发布到pip仓库
和java的maven一样,python也有自己的中央仓库https://pypi.org/,也是按照相似的方式来打包项目的,maven靠的pom.xml
,而Python靠的是setup.py
:
#!/usr/bin/env python
# coding=utf-8
from setuptools import setup
'''
把redis服务打包成C:\Python27\Scripts下的exe文件
'''
setup(
name="RedisRun", #pypi中的名称,pip或者easy_install安装时使用的名称,或生成egg文件的名称
version="1.0",
author="Andreas Schroeder",
author_email="andreas@drqueue.org",
description=("This is a service of redis subscripe"),
license="GPLv3",
keywords="redis subscripe",
url="https://ssl.xxx.org/redmine/projects/RedisRun",
packages=['RedisRun'], # 需要打包的目录列表
# 需要安装的依赖
install_requires=[
'redis>=2.10.5',
'setuptools>=16.0',
],
# 添加这个选项,在windows下Python目录的scripts下生成exe文件
# 注意:模块与函数之间是冒号:
entry_points={'console_scripts': [
'redis_run = RedisRun.redis_run:main',
]},
# long_description=read('README.md'),
classifiers=[ # 程序的所属分类列表
"Development Status :: 3 - Alpha",
"Topic :: Utilities",
"License :: OSI Approved :: GNU General Public License (GPL)",
],
# 此项需要,否则卸载时报windows error
zip_safe=False
)
python的打包方式:
python setup.py sdist
python发布包的方式
python setup.py upload sdist
从私有仓库安装依赖
默认会将包发送到中央仓库,但是也是可以通过配置来使用私有仓库的
pip install
的安装仓库在$HOME/.pip/pip.conf
中指定,他的内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
这里我们就将仓库设置成了清华的源,当然也可以设置为公司内部的私有仓库
[global]
index-url = https://username:passwd@xxx.com/simple
千万这里注意在url中带上身份信息,不然一直404,并且这里的账号和密码是被urlencode了的。
如果pip install
失败了,想要看到失败原因,可以使用pip install -v
来查看安装过程。
发布pip包到私有仓库
通过配置$HOME/.pypirc
文件能够指定发布包的服务器地址
[distutils]
index-servers =
pypi
pypitest
[pypi]
repository: https://upload.pypi.org/legacy/
username: your_username
password: your_password
[pypitest]
repository: https://test.pypi.org/legacy/
username: your_username
password: your_password
配置文件不必多说一看就懂,将包发布到pypitest
仓库
python setup.py upload sdist -r pypitest
将包发布到pypi
仓库
python setup.py upload sdist -r pypitest
更先进的deploy方式
python setup.py upload
的方式简单好用,但是数据库传输未加密,所以有安全隐患,目前已经不再推荐使用了。现在推荐使用twine
来发布pip包:
twine upload sdist/*