python镜像源
1. 【python】 设置 pip 默认下载路径(含国内镜像源)
如使用 清华镜像 安装 lxml 库的命令如下所示:
在c盘下找到当前用户,进入当前用户命名的文件夹后创建一个新文件夹“pip”,在pip中创建一个文本文件pip.txt,将后缀名改为.ini
pip.ini文件内容(设置国内镜像源,这里使用的是清华镜像,文章后面提供有其他常用镜像)
保存即可,如安装 lxml 库的命令如下所示(默认为清华镜像,不需要加 -i 属性):
清华:https://pypi.tuna.tsinghua.e.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.e.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.stlinux.org/
豆瓣:http://pypi.douban.com/simple/
2. 【Python基础】PIP 镜像源配置轻松搞定
pip 是 python 必不可少的的包管理工具,但是要在国内用得爽,必须要配置镜像源。
有哪些镜像站可用,以及如何配置,网上都有很多分享了。
我常用的是 阿里云镜像站 。
这里有一点比较麻烦的地方,就是是 Linux 和 Windows 环境下的 pip 配置文件的名字和位置都不同,经常混淆。
今天就教大家一招,快速搞定:
执行完上面两条命令就可以啦。
pip config set 命令能自动把配置写入到用户对应的配置文件中:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
命令虽然方便,但是参数格式复杂,记住不太容易,要是想改一下也挺麻烦,
所以我们进一步了解一下细节。
“ 下面我以 Windows 系统为例,实际在 Linux 系统也是类似
查看配置
执行 pip config list 命令可以显示已经有了哪些配置:
pip config list
global.index-url='http://mirrors.aliyun.com/pypi/simple/'
install.trusted-host='mirrors.aliyun.com'
带上一个 -v 选项:
pip config list -v
For variant 'global', will try loading 'C:\ProgramData\pip\pip.ini'
For variant 'user', will try loading 'C:\Users\davy\pip\pip.ini'
For variant 'user', will try loading 'C:\Users\davy\AppData\Roaming\pip\pip.ini'
For variant 'site', will try loading 'c:\users\davy\appdata\local\programs\python\python38\pip.ini'
global.index-url='http://mirrors.aliyun.com/pypi/simple/'
install.trusted-host='mirrors.aliyun.com'
“ 这里有一点不太好的地方是不显示配置是在哪个文件里。
就把它尝试获取的配置文件名完整路径列出来了。前面的 global 和 user 和 site 分别表示配置文件生效的范围:
global - 全局,一般不用
user - 当前用户,推荐
site - 只针对某一个 python 解释器
可以看到 user 有两个地方,其中配置任何一个都是可以的。
有的网络文章推荐的手动创建文件地址是前面那个,但是 pip 默认创建的是后者。
编辑配置
在命令行直接执行 pip config edit 会自动为我们打开配置文件,但是在 Windows 环境下还不行:
pip config edit
ERROR: Could not determine editor to use.
需要手动指定一个编辑器,就用记事本就行了:
pip config edit --editor notepad
“ Linux 系统中编辑器可以使用 vi,也可以是你习惯的其它编辑器
如果你从来没有设置过,它会报 找不到指定路径,这是因为相应的文件夹没有创建。
设置配置
通过 pip config set 命令可以直接设置配置项,它会自动创建没有的文件夹和文件。但是必须要给定一个配置项:
pip config set
ERROR: Got unexpected number of arguments, expected 2. (example: "pip config set [name] [value]")
我们随便写一个配置:
pip config set x.y z
Writing to C:\Users\davy\AppData\Roaming\pip\pip.ini
然后再执行上面的
pip config edit --editor notepad
就能自动打开配置文件,把拷贝好的配置文件内容贴进去就可以啦。
3. python第三方库,国内镜像源(清华&阿里)
命令:
例团差坦:庆信
pip install -i https://pypi.tuna.tsinghua.e.cn/simple pyqt5
国内两个镜像源:
清华: https://pypi.tuna.tsinghua.e.cn/simple
阿塌桐里: http://mirrors.aliyun.com/pypi/simple
4. Python pip 国内换源的几个办法
通常在使用pip的时候,加上参数-i和镜像地址
如:
但是这种方法每拆腊次安装库时旅蔽滑都需要输入一遍国内镜像源的地址,很麻烦。
所以就有永久修并友改pip镜像源地址的方法。
5. Python 镜像源设置与代理
1、在%appdata%目录下,新建文件夹pip
2、在pip文件夹下新建pip.ini文件
内容如下
1、弊芹安装nexus3,可以原生安装,也可以用docker安装,具体步骤自己租液毕网络
2、添加python仓库代理埋绝,参考 https://blog.csdn.net/u010674101/article/details/119895993
【重点】
6. Python 包管理工具
Python之所以受欢迎不光是因为它简单易学,更重要的是它有成千上万的宝藏库。这些库相当于是已经集成好的工具,只要安装就能在Python里使用。它们可以处理各式各样的问题,无需你再造轮子,而且随着社区的不断更新维护,有些库越来越强大,几乎能媲美企业级应用。那么这些工具库怎么下载安装呢?它们被放在一个统一的“仓库”里,名叫PyPi(Python Package Index),所有的库安装都是从这里调度。有了仓库之后,还需要有管理员,pip就是这样一个角色。
pip 是 Python 中的标准库管理器,这意味着它是一个工具,用它可以来管理 Python 标准库中其他的包,允许你安装和管理不属于 Python 标准库的其它软件包,其提供了对 Python 包的查找、下载、安装、卸载等功能。总的来说,pip的Python第三方库的大管家,搞懂它,会让你省很多事。从Python 3 >= Python 3.4 、Python2 >= Python2.7.9 版本开始,pip默认包含在Python的安装程序中,在安装Python时将会自动被安装,省事方便。
Python 的安装器中自带了 pip,所以你可以直接使用它,除非你安装的是更早版本的 Python。你可以通过以下命令来判断是否已安装:
如果你的 Python 环境没有安装 pip,则可以使用以下方法来手动安装。pip 安装文件下载: pypi.org/project/pip…
pip提供的命令不多,但是都很实用
pip命令默认使用的是国外的pypi镜像(pypi.python.org),安装慢不说,有时甚至会导致出现超时等网络问题,有时候为了安装一个包,失败重试安装好几次都不一定成功。所以,使用国内的pypi镜像,亦即 切换 pip 源 ,这样速度上更有保证,不失为一种加速pip安装第三方包的好方法。常用的镜像站有阿里云、清华大学等。其中清华大学开源软件镜像站是每 5 分钟同步一次的,比较推荐使用。阿里云镜像站的速度也非常快,这也是我现在在使用的。
切换切换 pip 源可以是临时性的,也可以设置为默认。临时性的,就是在安装包时,通过pip命令的 -i 选项指定镜像源即可。例如,临时使用阿里云镜像站作为 pip 源,可以是这样安装:
如果每次安装时都想要通过镜像源来安装,上面的办法不免有些麻烦。我们可以修改pip的配置文件,将镜像源写入到 pip 配置文件中。 对于linux系统 ,修改 ~/.pip/pip.conf 文件 (没有就创建一个文件夹及文件,文件夹要加“.”,表示是隐藏文件夹):
然后在文件中保存如下内容:
对于windows系统 ,在C:Users文件夹下的用户目录(例如如果当前用户是Administrator则是C:UsersAdministrator)下创建pip文件夹,然后再在此文件夹下创建pip.ini文件,在文件中写入一下内容:
配置完成后再通过 pip config list 查看pip配置。
我们经常会遇到这样的开发需求,比如你手头有多个开发项目,其中项目A要求用python3.7,项目B需要用python3.6,有要求项目A和项目B依赖包相互独立,互不干扰。为了满足这样的开发需求,我们需要在自己的电脑上安装多个Python版本,并且项目之间进行环境隔离。因此,我们要想运行这些项目,在工作电脑上就要安装不同版本的Python。 pyenv 是Python版本管理工具,通过系统修改环境变量来实现Python不同版本的切换,利用它可以在同一台电脑上安装多个版本的Python,设置目录级别的Python,还能创建和管理vitual python enviroments。而且所有的设置都是用户级别的操作,不需要sudo命令。
首先安装pyenv,如果你是Mac电脑,那么推荐使用Homebrew来安装。
要想升级pyenv,则可以执行:
pyenv安装完成后,需要将$HOME/.pyenv/bin添加到PATH变量前面,这一步非常关键。
也可以采用手动安装的方式,将pyenv检出到你想安装的目录。
添加环境变量,将PYENV_ROOT 指向 pyenv 检出的根目录,并向 $PATH 添加 $PYENV_ROOT/bin 以提供访问 pyenv命令的路径。这里的 shell 配置文件(~/.bash_profile)依不同系统而需作修改,如果使用 Zsh 则需要相应的配置 ~/.zshrc
在使用 pyenv 之后使用 pip 安装的第三方模块会自动安装到当前使用 python 版本下,不会和系统模块产生冲突。使用 pip 安装模块之后,如果没有生效,记得使用 pyenv rehash 来更新。
安装完pyenv,可以安装Python,首先查看可安装的Python版本:pyenv install -l,接下来开始安装Python
执行命令 pyenv versions 查看安装结果。
可以看到,已经成功安装了Python,安装的位置在 /Users/dllwh/.pyenv。
可以看到,3.9.9 前面有一个星号,说明成功切换到了 3.9.9 版本,可以执行一下python来验证。
Pipenv 是 Python 官方推荐的包管理工具,它综合了 virtualenv、pip 和 pyenv 三者的功能,你可以使用 pipenv 这一个工具来安装、卸载、跟踪和记录依赖性,并创建、使用和组织你的虚拟环境。
如果你是Mac电脑,那么推荐使用Homebrew来安装和升级pipenv:
也可以通过pip来安装和升级pipenv:
进入到项目目录中,通过下面的指令为项目创建虚拟环境。
上面的操作,给pipenv_demo这个项目初始化了一个 Python 3.9.9 的虚拟环境,并在项目录下生成一个项目依赖包文件 Pipefile。如果系统中没有 3.9.8 版本的Python,pipenv 会调用 pyenv 来安装对应的 Python 的版本。默认地,虚拟环境会创建在 ~/.local/share/virtualenvs目录里面。我们也可以通过 pipenv --venv查看项目的虚拟环境目录。可以通过 pipenv --rm 删除虚拟环境。
如果想更改虚拟环境的目录,可以在 .bashrc 或 .bash_profile 中,设置环境变量WORKON_HOME,指定虚拟环境的目录所在位置,比如想将虚拟环境放到~/.venvs目录,则可以执行下面的命令。
如果希望在项目目录下创建虚拟环境目录(.venv),需要在 .bashrc 或 .bash_profile 中配置环境变量PIPENV_VENV_IN_PROJECT:
pipenv使用 Pipfile 和 Pipfile.lock 来管理依赖包,并且在使用pipenv添加或删除包时,自动维护 Pipfile 文件,同时生成 Pipfile.lock 来锁定安装包的版本和依赖信息。相比pip需要手动维护requirements.txt 中的安装包和版本,具有很大的进步。
为项目安装依赖包到虚拟环境中,使每个项目拥有相互独立的依赖包,是非常不错的Python的开发实践。安装依赖包到虚拟环境中的方法:
执行完上面的命令后,检查一下是否安装成功:
观察项目的根目录下,又多了一个 Pipfile.lock 文件。这两个文件记录了此项目的依赖包,这两个文件的区别是 Pipfile 中安装的包不包含包的具体版本号,而Pipfile.lock 是包含包的具体的版本号的。如果不想产生 Pipfile.lock 文件,在安装依赖包的时候,加上 –skip-lock 选项即可。
在使用pipenv的时候,常常会安装过程比较慢,这个是因为pipenv创建的 Pipfile 中默认的Pypi源是python官方的 pypi.python.org/simple。我们国内…
为了避免每次都要指定–pypi-mirror,我一般会在创建好Pipfile以后,将文件中 source 块下的 url 字段,设置为国内的 pypi 源,我推荐的是清华的Pypi源或者阿里源,具体设置如下:
如果是要删除虚拟环境中的第三方包,执行:
用git管理项目时候,要把Pipfile和Pipfile.lock加入版本跟踪。这样clone了这个项目的同学,只需要执行:
就可以安装所有的Pipfile中 [packages]部分列出来的包了,并且自动为项目在自己电脑上创建了虚拟环境。
上面的方法都是安装Pipfile中列出来的第三方包的最新版本,如果是想安装Pipfile.lock中固定版本的第三方依赖包,需要执行:
如果项目之前使用requirements.txt来管理依赖的,那么使用pipenv安装所有依赖可以采用类似pip的方法:
虚拟环境创建好了之后,就可以在里面进行开发了。如果在命令行下开发,则在项目目录下执行 pipenv shell ,就进入到了虚拟环境中,在这个环境中,已经包含安装过的所有依赖包了,接下来就可以利用这些依赖包进行开发工作了。如果是用Pycharm进行开发,就更简单了,直接用Pycharm打开项目即可。可以从Pycharm中的左侧导航栏里面看到External Libraries显示的是虚拟环境中的Python解释器了。
在虚拟环境中执行开发好的程序,有两种方式,一种是前面提到的先执行pipenv shell进入到虚拟环境后,再执行python程序;另一种方式,则是执行pyenv run,比如在虚拟环境中执行基于pytest框架编写的测试用例,只需要执行下面的命令即可:
作者:独泪了无痕
链接:https://juejin.cn/post/7063699409703272485
7. python3.7基础镜像有多大
选择基础镜像的难题
在使用Docker部署某类服务时,第一个面临的问题就是选择一个基础镜像。那么如何选择基础镜像更有利于我们的工作呢?
我们知道docker是基于linux的,任何一个镜像,其包含的 bins/libs/files 都可以认为是属于特定linux版本的一部分。linux一切皆文件的思想下,我们在使用docker制作服务镜像部署时,包管理、环境设置、程序安装、命令格式、文件系统、兼容性等对于不同linux版本都可能有一些区别,所辩谨以,选择一个习惯使用的linux版本就变得尤为重要。
举例来说,我需要经常用docker部署Python应用。在docker hub中选择哪个基础镜像呢?搜索“适合Python开发的Docker镜像”会有很多文章,常用的主要有Alpine、Stretch、Jessie等,携碧基默认版本是基于Ubuntu的,但是太大了。
Alpine是一个微型linux系统,选择这个版本镜像的很多,因为它足够小,但是实际项目使用时却发现各种各样的问题。最大问题就是它的c运行库采用 musl-libc 而不是linux各发行版的 glibc,所以涉及c运行时会有兼容性的问题。
2、定制基础镜像
在选择基础镜像的问题上踩坑无数之后,决定换个角度想:为什么不基于特定的linux版本,自己制作一个基础镜像呢?这样自己又熟悉,又有开发环境来验证问题,而且很多制作应慧腔用镜像时遇到的问题,都可以在定制的基础镜像中一次性解决。
从这个想法出发,我选择熟悉的linux版本基础镜像,然后在其中按需求安装Python环境,一切都跟在服务器上安装Python环境一样,这不就又回到了熟悉的操作了吗?不同的是,这些只需要做一次就可以了,得到自己定制的Python基础镜像,后面制作各种应用镜像时,只需要pip安装依赖库、复制文件、添加命令就可以了。
这个方法同样适用其他的环境基础镜像定制,选择自己的linux基础镜像,在其中像往常一样安装需要的环境。这样,就可以从镜像里不熟悉的文件系统中解脱出来了。
3、定制CentOS系统Python基础镜像
下面给出一个实例:
开发环境:CentOS 7
Python版本:3.6
# 完整功能python3 imiyuer/python:3.6.4-centos
FROM centos:7.5.1804
MAINTAINER imiyuer <[email protected]>
ENV PATH $PATH:/usr/local/python3/bin/
ENV PYTHONIOENCODING utf-8
RUN set -ex \
# 替换yum源
&& mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup \
&& curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo \
&& sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo \
# 安装python依赖库
&& yum makecache \
&& yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make wget \
&& yum clean all \
&& rm -rf /var/cache/yum \
# 下载安装python3
&& wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz \
&& mkdir -p /usr/local/python3 \
&& tar -zxvf Python-3.6.4.tgz \
&& cd Python-3.6.4 \
&& ./configure --prefix=/usr/local/python3 \
&& make && make install && make clean \
# 修改pip默认镜像源
&& mkdir -p ~/.pip \
&& echo '[global]' > ~/.pip/pip.conf \
&& echo 'index-url = https://pypi.tuna.tsinghua.e.cn/simple' >> ~/.pip/pip.conf \
&& echo 'trusted-host = pypi.tuna.tsinghua.e.cn' >> ~/.pip/pip.conf \
&& echo 'timeout = 120' >> ~/.pip/pip.conf \
# 更新pip
&& pip3 install --upgrade pip \
# 安装wheel
&& pip3 install wheel \
# 删除安装包
&& cd .. \
&& rm -rf /Python* \
&& find / -name "*.py[co]" -exec rm '{}' ';' \
# 设置系统时区
&& rm -rf /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
登录后复制
比如我的生产环境是centos:7.5.1804,就选择它作为基础镜像。
将Python安装在/usr/local/python3,所以把程序路径添加到PATH环境变量,后续安装的python程序就不需要再添加环境变量或软连接。添加Python的encoding环境变量为utf-8。
后面下载安装Python的过程就都比较熟悉了,玩过Python的人都知道。
最终生成镜像大小:453MB,感觉还好。alpine镜像是90M但是很坑,默认python镜像是689MB。
几点说明:
1、RUN中尽量使用 \ &&连接命令的方式,减少镜像层数,可以一定程度减少体积。
2、尽可能删除不需要的文件,也是为了减少镜像体积。
3、Python默认不安装wheel,但是第三方库常需要使用wheel安装,所以加上它。
4、docker运行时程序获取系统时间时,如打印日志等,获取的是docker镜像内文件系统的时区设置,默认是格林尼治标准时区,所以需要设置为所在的时区。