先介绍一下环境:
- 真正要执行的python的文件是在一个docker容器,里面的文件是root的权限
- 里面文件是映射在宿主机的一个文件夹下 ,宿主机只是普通用户权限
操作过程
- 我想要在宿主机运行一下,但程序需要要几个依赖的python模块
- 执行了
pip install -r requirement.txt
- pip的版本太低了 要求pip version 20.1 而宿主机的pip 只是 20.0.2()
- 提示:WARNING: You are using pip version 20.0.2; however, version 20.1 is available.
You should consider upgrading via the '/usr/bin/python -m pip install --upgrade pip' command.
- 按照提示要求 执行了
/usr/bin/python -m pip install --upgrade pip
又提示了这个WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)")': /packages/54/2e/df11ea7e23e7e761d484ed3740285a34e38548cf2bad2bed3dd5768ec8b9/pip-20.1-py2.py3-none-any.whl
主要是国内的网络的原因 : 想一下 看有没有国内的源。。找了两个 有一个清华的 还有一个是豆瓣?
- 然后执行完了 pip也升级上去了
然后我就执行 pip install -r ...... (<u>这里有个坑,其实我没想到后面和权限有关系</u>) 运行成功了也装上了
- 当我要执行 python XXXXX.py 因为权限的原因宿主机的普通用户的权限执行不了容器文件的root的,(<u>其实改一下权限就行,这就让我很迷惑了</u>)
问了一下好心的群友: 他叫我看一下 sudo python -m pip freeze
和python -m pip freeze
有没有区别
确实 加了 sudo 少了那几个模块
然后我再 重新 sudo pip install -r requirement.txt
就重新安装上了 程序也运行了起来了
而容器我也想执行一下, 但pip没有安装
安装的方法有好几种(我尝试两种)
脚本安装
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
(下载速度简直无敌了,差点把我整睡了)python get-pip.py
源码包安装
- https://pypi.org/project/pip/#files
wget --no-check-certificate https://files.pythonhosted.org/packages/d1/05/059c78cd5d740d2299266ffa15514dad6692d4694df571bf168e2cdd98fb/pip-20.1.tar.gz
( 速度也是慢得可以)- 或
wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-20.1.tar.gz
- tar -zxvf pip-20.1.tar.gz
- cd pip-20.1
- python setup.py build
- python setup.py install
我用的是第二种,还有其他的。比如yum apt-get
总结(<u>也不知道对不对</u>)
- sudo python 和 python有区别的 (以后能改权限就改权限,不要这样折腾),建议不要用sudo ,好像官方也是不提倡这样做的
- pip 安装python依赖模块 可以
pip install -r requirement.txt -i https://pypi.doubanio.com/simple
临时换成国内的源 - pip 的安装, 最好是去官网下载源码包来进行安装