2021-11-13
作者:互联网
利用虚拟环境快速运行python开源项目
hawksoft
无论是做研究,还是开发应用软件,从一个好的开源项目开始着手,是一个好注意。
但基于python的项目,尤其是目前流行的智能应用项目,存在一个很大的问题,就是向后兼容性差。具体表现为,同一个项目源码,在其它机器上经常无法正常运行。这是因为:
- python本身就存在这个问题,如python3.x就不兼容python2.x。
- 各种包,尤其是用于智能计算的包如tensorflow,pytorch等,由于发展迅速,只好放弃了向后兼容性。
为此,基于python的软件开发,提出了虚拟环境的概念。思想很简单,就是为一个项目安装一个python。这也是被逼出来的,方法就是:针对每一个项目,建立一个对应的python环境,该环境包括:这个项目用到的python版本,项目依赖的每一个包,以及这些包的具体版本。
目前这种思想已经成为共识,并进一步发展出了基于docker的python项目开发,这个有时间后面再讲。
下面,贯彻这种思想,介绍如何从一个开源项目开始自己的工作。为了叙述方便,假设:
- 我在windows操作系统上工作。
- 我已经安装了python,是一个较新的版本,但不要太新,比如python3.8。
- 我在D盘建立了目录D:\myWorkshop,后面的开发都在这个目录上完成,称之为工作目录。
- 我在github.com发现了一个开源项目,名为openProject,对我很有用,我准备开始用它。
1 创建虚拟环境
如果你安装了anaconda,那么创建虚拟环境,只需要点几下鼠标就能完成。但其实python本身就提供了创建虚拟环境的包,只需要执行下面的语句,来创建一个名为myPython的虚拟环境:
cd D:\myWorkshop\myPython
python -m venv myPython
其实一个虚拟环境,就是一个同名的目录。这里是D:\myWorkshop\myPython.
创建虚拟环境后,现在你的机子上,至少有两个python了。一个是开始安装的,我们可以称之为原生python,另一个就是我们刚才创建的虚拟环境。因此,每次使用,你需要指出使用哪一个。如果选择使用虚拟环境,称为激活该环境,使用下面的命令。
cd D:\myWorkshop/myPython/Scripts
activate myPython
如果不想使用虚拟环境了,通过下面的命令:
cd d:\myWorkshop\myPython\Scripts
deactivate myPython
现在,你就在使用原生python,这个称为去激活。
2 下载开源项目
如果使用git,则:
git clone https://github.com/openProject.git
也可以直接下载项目的zip文件,然后解压到自己的工作目录.
操作后,在D:\myWorkshop下会有两个目录:
- myPython :虚拟环境
- goodProject :开源项目
3 安装相关的包
有经验的开发者,会将项目运行所需要的包,写在一个名为requirements.txt的文件中。因此,快速检查一下这个开源项目有没有这个文件,如果有,那就比较简单了。直接执行下面的命令:
pip install -r requirements.txt
然后安静地等待完成。
如果比较慢,甚至报错,这不是你的问题,而是因为这些包所在的仓库pypi.org位于国外,网速太慢。因此,只要使用国内的镜像站点,就可以解决。使用下面的命令:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.cqu.edu.cn/simple
你也看出来了,只是在后面加了一个地址,这是清华大学提供的镜像。
如果在开源项目中没有发现requirements.txt文件,就需要你自己来创建了。这个文件包含了需要安装的包的列表,每一行一个,如下面的样子:
tensorflow==1.14
keras==2.23
pillow
每一行前面是包的名字,你也猜的出,后面通过==、>和<来指定需要安装的包的版本号。如果没有指定,则表示安装最新的版本。
通过阅读开源项目的README文件,你可以找到它需要哪些包,以及每一个包的版本。
4 运行开源项目
按照README文件,找到主要的运行文件,一般在该文档的usage部分,运行测试。这时一般会遇到一些问题,分别处理如下:
1 找不到某个包
说明前面没有安装,只需要缺什么就装什么:
pip install packagename -i https://pypi.tuna.tsinghua.cqu.edu.cn/simple
当然,最好把缺的这个包添加到requirements.txt文件中。
2 找不到某个文件
首先检查一下这个文件名字对不对,是否存在。但绝大部分原因是:由于windows下文件路径中,用\进行分割,而linux中,则用 / 进行分割。大部分开源项目都是默认在Linux系统中开发,所以作者用了后者,可能会造成在windows下出错。仔细检查一下,换成windows的分割符,同时不要忘了,用**\\**.
3 莫名其妙的错误
一般是某些包使用的包和其它包使用的相同包在版本上发生了冲突。这时最好的方法就是把错误信息拷贝下来,到百度上去搜。因为这种坑,绝对有前人踩过了。而给出的解决方案,一般都是卸载某些包的现在版本,安装较旧的版本,这称为回退。这里假设有个包pack,需要退到2.1,语句如下:
pip uninstall pack
pip install pakc==2.1
前一命令卸载,后一命令安装指定的版本。
5 多说两句
这里我所说的,都在windows操作系统上。这些概念在linux和macos上都一样,只是命令稍微有些差异。
标签:11,文件,13,项目,python,myPython,开源,虚拟环境,2021 来源: https://blog.csdn.net/qq_43687094/article/details/121300357