其他分享
首页 > 其他分享> > 2021-11-13

2021-11-13

作者:互联网

利用虚拟环境快速运行python开源项目

hawksoft
无论是做研究,还是开发应用软件,从一个好的开源项目开始着手,是一个好注意。

但基于python的项目,尤其是目前流行的智能应用项目,存在一个很大的问题,就是向后兼容性差。具体表现为,同一个项目源码,在其它机器上经常无法正常运行。这是因为:

  1. python本身就存在这个问题,如python3.x就不兼容python2.x。
  2. 各种包,尤其是用于智能计算的包如tensorflow,pytorch等,由于发展迅速,只好放弃了向后兼容性。

为此,基于python的软件开发,提出了虚拟环境的概念。思想很简单,就是为一个项目安装一个python。这也是被逼出来的,方法就是:针对每一个项目,建立一个对应的python环境,该环境包括:这个项目用到的python版本,项目依赖的每一个包,以及这些包的具体版本。

目前这种思想已经成为共识,并进一步发展出了基于docker的python项目开发,这个有时间后面再讲。

下面,贯彻这种思想,介绍如何从一个开源项目开始自己的工作。为了叙述方便,假设:

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下会有两个目录:

  1. myPython :虚拟环境
  2. 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