pip install的东西从哪里来的?

从PyPI (Python Package Index)来的,官网是:  https://pypi.python.org/pypi/
执行pip install terminaltranslator命令的时候,它就会去从官方网站搜terminaltranslator,搜到了就下载压缩包并解压安装,如果没有搜索到就会报错。

众所周知的原因,国内访问国外网站总是不那么顺畅,于是就有了PyPI镜像,国内有很多,我用过阿里云的,中科大的,豆瓣的。阿里云的同步的好像不够及时,中科大的好像很及时,所以我就用中科大的。那么,该怎么用这些镜像呢?

方法1: 给pip加参数-i 后面跟镜像的url,但是要记住并每次都写这个url可是一件难事。
方法2: 编写配置文件~/.pip/pip.conf:

[global]
index-url = https://mirrors.ustc.edu.cn/pypi/web/simple

如何把你自己的Python程序发布到PyPI上面去?

首先去官网注册你的账号,不能师出无名总得留下你的大名嘛。注册地址:
https://pypi.python.org/pypi?%3Aaction=register_form

注册好后编写你的配置文件~/.pypirc

[distutils]
index-servers =
pypi
pypitest [pypi]
repository=https://pypi.python.org/pypi
username=Your-Account
password=Your-Password [pypitest]
repository=https://testpypi.python.org/pypi
username=Your-Account
password=Your-Password

这里配置了两个地址,一个是PyPI Live,是正式发布Python包的;另一个是PytPI Test 是用来正式发布之前验证你的包是否正常。

准备好你的Python包

通常你的代码目录结构如下:

root-dir/   # 你的代码的根目录
setup.py
setup.cfg
LICENSE.txt
README.md
mypackage/
__init__.py
foo.py
bar.py
baz.py

其中的setup.py就是安装包的文件,格式如下:

from distutils.core import setup
setup(
name = 'mypackage',
packages = ['mypackage'], # 跟上面代码目录下面的包名一致
version = '0.1',
description = 'A setup test package',
author = 'veelion',
author_email = 'veelion@gmail.com',
url = 'https://github.com/veelion/mypackage', # 指向 github 仓库的URL
keywords = ['testing', 'logging', 'example'], # 一些关键词
classifiers = [],
)

setup可以从两个包里面调来使用,一个是上面用的distutils,另外一个是setuptools,如:

from setuptools import setup

这两个包功能基本一样,而setuptools支持wheel(未来包管理的趋势),所以一般用setuptools更好一些。再多说两句wheel,它是用来准备替换老的egg的,其中很好的一个优点是“二进制格式发布”,当包内含有C/C++写的扩展的时候可以把.so/.dll等二进制库打包进去,实现“一次编译,到处使用”的目标。省的用户编译时需要解决一堆依赖问题。

但是setuptools好像是不支持单文件包,即你的包只是一个.py文件而非上面说的是一个带__init__.py我目录。而distutils通过py_modules可以指定当个文件作为包。

上面说的是用setup.py管理Python包让其他人import用,而非在命令行下指向。

而terminaltranslator 是一个命令行工具,可以在setup.py里面不指定package而是指定scripts来把相关文件安装到bin目录下:

if __name__ == "__main__":
from setuptools import setup setup(
name='TerminalTranslator',
version='0.8',
author="Veelion chong",
author_email="veelion@gmail.com",
license='MIT',
url='https://github.com/veelion/tt',
description=("Linux terminal translating tool implemented in Python"),
scripts=['t', 'tt', 'terminaltranslator.py'],
)

这里还用到一个小tip,把terminaltranslator.py 链接为t和tt两个别名,这样命令行下使用起来更方便。 不过,好像Windows下不支持Linux的软链接,t和tt可能在Windows下出问题

发布到PyPI

首先,打包生成压缩包

python setup.py sdist
python setup.py bdist_wheel (distutils不支持这个wheel选项)

上传到PyPI:

python setup.py register #注册你的包,如果出现与已有包重名则报错
python setup.py upload

更新:在python3下面,python setup.py upload 已经无效,官方推荐用 twine 上传到pypi。

或者可以用twine (无需register,直接upload)

twine register dist/xxx.gz
twine register dist/xxx.whl
twine upload dist/*

python学习笔记整理于猿人学网站的python基础教程

利用setuptools发布Python程序到PyPI,为Python添砖加瓦的更多相关文章

  1. 在windows中:双击运行Python程序、后台运行Python程序

    在windows中:双击运行Python程序.后台运行Python程序 安装Python解释器的windows环境,如果双击运行*.py的文件,会闪退.怎样避免闪退呢? 我们用python的日志输出程 ...

  2. [python]通过微信公众号“Python程序员”,编写python代码

    今天发现微信公众号中,居然可以编写python代码,很是惊喜,觉得蛮有趣的. 步骤如下: 1.关注微信公众号“Python程序员” 2.关注成功后,点击右下角的“潘多拉”->"Pyth ...

  3. 利用Pycharm断点调试Python程序

    利用Pycharm断点调试Python程序 1.代码 准备没有语法错误的Python程序: #!/usr/bin/pythonimport numpy as np class Network: def ...

  4. 第一章 Python程序语言简介

    第一节 Python概述 1. 什么是Python Python是一种 解释型.面向对象.动态数据类型 的高级程序设计语言.由Guido van Rossum与1989年发明,第一个公开发行版本发行于 ...

  5. 谈谈 Python 程序的运行原理

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,谈谈 Python 程序的运行原理 这篇文章准确说是『Python 源码剖析』的 ...

  6. 如何优雅地退出python程序

    如何优雅地退出python程序 一个单模的python程序,启动之后要能够优雅地关闭.即当用户按Ctrl+C或者kill pid的时候,程序都能从容关闭.实现起来非常简单. is_running = ...

  7. java调用python程序以及向python程序传递参数

    在做项目的时候,经常会碰到这个问题,主要程序是用java写的,有些功能使用python写的,整个项目需要把java代码和python代码进行整合,在一个项目里面运行,这就涉及到java调用python ...

  8. Linux 下用 crontab 设置定时执行python 程序

    Linux 下用 crontab 设置定时执行python 程序 方法/步骤   1,先大概了解crontab,/etc/crontab 就是crontab 的配置文件. crontab命令详解可以查 ...

  9. Java调用Python程序

    最近,需要在应用中,需要使用Java程序去调用Python代码,主要有两种实现方式. 一.使用Jython架包 因为调用的Python代码中需要使用Json对象,开始使用jython2.5.2,发现不 ...

随机推荐

  1. python面向对象之初步认识

    面向对象 类,用来描述一类事物的相同的特征或者属性.比如说,狗,狗属于一种统称,狗还分有不同的种类,比如,牧羊犬,蝴蝶犬,京巴等等,他们都有相同的特征,一个头,两个耳朵,四条腿,会跑,会吃东西,会汪汪 ...

  2. F2812 DSP程序运行在片内RAM和FLASH的区别

    F2812 DSP程序运行在片内RAM和片内FLASH的区别 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:F2812是带有内部Flash的DSP,与 ...

  3. Postman 下载和使用

    Postman 的官网下载地址是:https://www.getpostman.com/apps/

  4. Kali中安装VMwaretools

    VMware Workstation 中 虚拟机选项,安装VMware Tools 选项. 在虚拟机中,打开VMware Tools,将 VMwareTools-10.1.15-6627299.tar ...

  5. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验四 《Android程序设计》 实验报告

    实验四 Android程序设计 实验要求 参考Android开发简易教程 完成云班课中的检查点,也可以先完成实验报告,直接提交.注意不能只有截图,要有知识点,原理,遇到的问题和解决过程等说明.实验报告 ...

  6. [转帖]Chrome中默认非安全端口

    Chrome,你这坑人的默认非安全端口 https://www.cnblogs.com/soyxiaobi/p/9507798.html 之前遇到过 这个总结的比之前那篇要好呢. 今天用chrome打 ...

  7. Linux下的静态库与动态库的生成与调用

    静态库与动态库 静态函数库 这类库的名字一般是libxxx.a,xxx为库的名字.利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行 ...

  8. Java语言资源国际化步骤

    语言资源国际化步骤:   1. 定义资源文件(如:language),需要使用命令native2ascii命令进行转码:(native2ascii是jdk中的转码工具,在jdk的bin目录下)   2 ...

  9. VMware的下载与安装

    VMware的下载与安装 一.虚拟机的下载 1.进入VMware官网,点击左侧导航栏中的下载,再点击图中标记的Workstation Pro,如下图所示. 2.根据操作系统选择合适的产品,在这里以Wi ...

  10. linux 安装xdebug

    一.安装了 xdebug php -m | grep 'xdebug' 如果没有安装就执行 首先根据 phpinfo() 信息 下载对应的版本,具体看参数: 下载地址:https://xdebug.o ...