Anaconda+Pycharm环境下的PyTorch配置方法

文章目录

    • 写给新手的话
          • `pycharm`是什么,为什么让我指定`interpreter`
          • `pip`又是什么
          • `conda`,`vitualenv`,`pipenv` 又是什么
          • `anaconda`是什么,`anaconda`和`conda`是什么关系,为什么要装`anaconda`
          • 下文所述两种配置方法异同
    • 使用`conda`的`pytorch`环境配置方法
      • 安装`anaconda`
          • 下载`anaconda`
          • 安装`anaconda`
      • 使用`conda`组装`pytorch`虚拟环境
          • 安装`pytorch`到本地`conda`仓库中
          • 创建新的`conda`虚拟环境
          • 使用`conda`虚拟环境
          • 在`pycharm`中使用`conda`虚拟环境
            • 将自己创建的`conda`虚拟环境`pytorch-py36`添加到`pycharm`的`interpreter`可选列表中
            • 使用已经添加进来的虚拟环境`pytorch-py36`
            • 大功告成!
    • `pytorch`手动配置方法
      • 源码安装`python3.6.7`
          • 下载`python3.6.7`
          • 创建目录,改名
          • 解压缩
          • 源码安装zlib
          • 编译安装
          • 验证安装1
          • 备份编译包
          • 建立软连接
          • 配置环境变量
          • 验证安装2
      • 在`python3.6.7`中安装`pytorch`
          • 下载`pytorch`
          • 使用`pip`安装`pytorch`
          • 验证安装
      • 在`Pycharm`下使用`pytorch`

写给新手的话

pycharm是什么,为什么让我指定interpreter

记事本
最开始写C语言代码的时候,人们使用vi记事本等软件写代码,写完了之后用GCC编译,然后运行编译结果,就是二进制文件。python也可以这样做,用记事本写完代码,保存成如test.py的文件后,通过命令python test.py可以运行这一文件。最初的C语言代码都是通过这种方式写的。但是人们很快发现了一个问题,就是这么弄太麻烦了,编写用vi,运行得切出去用shell,出错了再切回vi改代码。这要是编写、运行、调试都能在同一个窗口里进行,再来点语法检查,高亮,颜色,代码提示,那写代码的效率不就高多了吗?所以就有了Microsoft Visual C++等写代码工具,这些工具除了提供方便的文本编辑功能,还能够连接到编译器(C/C++)、解释器(javapythonR),把编译器和解释器的运行结果显示在自己的界面上,这些工具被称为IDE(集成开发环境)。正因为编译器,解释器不是它的组成部分,pycharm中每个项目都要指定一个interpreter才能运行。即某个路径下的python.exe。其他的IDE也都要指定运行环境。

pip又是什么

应用商店
pythonjava一样,运行起来需要各种包的支持。java兴起的最开始,开源jar包作者在各自的网站上面发布自己的包,需要用的开发者就去他们的网站上下载,然而很快就出现了一个问题,如果一个大型工程需要用到几十个,甚至几百个jar包,一个个翻网站下载显然是非常劳累的。所以就有了mavengradle,他们自己建了maven仓库和gradle仓库,就像IOS应用商店一样,开源jar包的作者会把各种版本的jar包统一上传到仓库,开发者统一下载,非常方便。
python问世的时候,javamavengradle早已流行多年,python官方也吸取了经验,直接官方内置pip工具,官方经营pip仓库。正式的名称叫做包管理工具
conda的功能之一也是包管理工具。

condavitualenvpipenv 又是什么

照片管理系统
python版本繁多,版本之间的区别较大。这种不兼容激化了矛盾,当一台机器上存在多个python项目,而这些项目又各自依赖于不同的python版本以及各个不同版本的包,这些包对于python版本又非常敏感。即使有pip,配置环境也变成了一件令人绝望的事。以往java等语言没有这么激烈的矛盾,是因为它们没有这么多版本,而且版本之间也能大体兼容。
所以人们就想,如果能把pip配置出来的结果“照”下来。不同项目用不同的“照片”,这问题不就解决了吗。
这类任务通常都是靠虚拟化技术。

  • 传统的虚拟机可以胜任这个任务,但是运行效率有损失,消耗资源多,管理不灵活。
  • 新晋的docker容器比虚拟机更加轻量,更加灵活,但对于这个任务来说,还是同样的缺点。

于是conda等软件应运而生,它不是虚拟机,没有使用虚拟化技术,自然就没有运行效率损失。它只是一个物理机上的管理软件,可以把它想象成一个照片管理系统,只不过它管理的照片有点特殊,叫做虚拟环境,它是某个python运行环境,里面已经装好了一些特定版本的特定包。
注意:pippipenv是两个东西,不可混为一谈。

anaconda是什么,anacondaconda是什么关系,为什么要装anaconda

XX照片管理系统+XX全家桶
anacondaminiconda同为conda官方推荐的conda工具。anacondaconda的关系,就像githubgit的关系,anaconda不光包含了conda命令行软件,还包含了多如牛毛的预装python包,以及令人瞠目结舌的黑科技全家桶。
我们装anaconda主要是冲着conda管理python运行环境比较方便的原因,以及它那一大堆预装包。虽然其他的我们用不到,但是大树底下好乘凉嘛。

下文所述两种配置方法异同

下面有两种pytorch环境配置方法,推荐使用第一种,即使用condapytorch环境配置方法。第二种费时费力。这是亲测的结果。不禁慨叹还是conda好用,手动撸环境犹如小米加步枪啊。

使用condapytorch环境配置方法

安装anaconda

下载anaconda

在https://www.anaconda.com/distribution/ 找到合适的安装包,得到下载链接后进行下载

https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh
安装anaconda

所有步骤参照官方文档 https://docs.anaconda.com/anaconda/install/linux/

bash Anaconda3-2019.03-Linux-x86_64.sh

使用conda组装pytorch虚拟环境

安装pytorch到本地conda仓库中

pytorch官方网站找到合适的安装命令 https://pytorch.org/get-started/locally/
注意:CUDA是使用GPU进行计算的组件。

conda install pytorch-cpu torchvision-cpu -c pytorch

使用下面的命令可以看到conda仓库中的torch

conda list |grep torch
创建新的conda虚拟环境

官方文档
https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html

conda create --name pytorch-py36 --channel pytorch python=3.6 pytorch-cpu torchvision-cpu
使用conda虚拟环境
activate pytorch-py36
python

在打开的python命令行里输入

import torch
import torchvision
import numpy

不报错则说明构建conda虚拟环境pytorch-py36成功。
注意:pytorch-py36默认在anaconda目录下的envs文件夹中。

pycharm中使用conda虚拟环境
将自己创建的conda虚拟环境pytorch-py36添加到pycharminterpreter可选列表中

pycharm新建工程,或在files->settings->project:->project interpreter界面,可以设定project interpreter

  • 新建工程界面,选择Existing enviroment,点击...按钮,会弹出添加界面。
  • settings界面,点击齿轮按钮,选择Add,会弹出添加界面。
    在添加界面左侧选择Conda Environment,右边选择Existing environment,再点击...按钮添加一个已经存在的conda虚拟环境,即刚刚构建的pytorch-py36
    Anaconda+Pycharm环境下的PyTorch配置方法_第1张图片
使用已经添加进来的虚拟环境pytorch-py36

interpreter列表中选择刚刚添加的interpreter。如果需要对刚添加的interpreter改名,比如把python 3.6 (3)改成pytorch-py36,则点击齿轮按钮,点击show all,里面可以改名。
Anaconda+Pycharm环境下的PyTorch配置方法_第2张图片

大功告成!

试着使用import torchimport torchvision这样的语句,不会报错则成功。

pytorch手动配置方法

源码安装python3.6.7

下载python3.6.7
cd ~
wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgz
创建目录,改名
mkdir ~/python
mkdir ~/python/python367
mv ~/Python-3.6.7.tgz ~/python/python367.tgz
解压缩
cd ~/python
tar xvf python367.tgz
源码安装zlib

zlibpython需要的依赖库,必须提前安装。
如果有管理员权限,只需用包工具即可安装,如sudo apt-get install zlib1g-dev;因为没有管理员权限,所以采用源码安装。
可以用以下两条命令确认zlib是否存在。

ls /usr/include |grep zlib
ls /usr/lib |grep zlib

如果任意一条输出为空,则说明zlib不存在,需要安装。
注意:|grep可以跟在任意命令之后,对该命令的输出结果进行搜索,只显示跟搜索内容有关的部分。

cd ~/python/Python-3.6.7/Modules/zlib
mkdir ~/python/zlib
./configure --prefix=/home4/grad4/wzhao1/python/zlib
make install

然后将zlib加入到GCCincludelib路径中。

export C_INCLUDE_PATH=~/python/zlib/include
export CPLUS_INCLUDE_PATH=~/python/zlib/include
export LD_LIBRARY_PATH=~/python/zlib/lib
export LIBRARY_PATH=~/python/zlib/lib

注意:此处的路径修改仅对当前shell有效,关闭shell或断开重连都会导致路径失效。因为我们只需要编译一次,所以采用这种方式。想查看这两个路径的当前值使用echo命令,即echo $C_INCLUDE_PATH。如果想要每次都生效,可以将export命令写入.bashrc中。
注意:GCC编译时搜索的路径远比这些变量多,这些变量只是其中的一部分,且通常默认为空,也不是最优先的。比如最常见的,也是一般情况下最优先的搜索路径是/usr/include/usr/lib,也就是刚才判断zlib是否存在的命令中搜索的路径。
注意:四个变量含义:C头文件路径(.h),C++头文件路径(.hpp),动态链接库路径(.so),静态链接库路径(.a)。

编译安装
cd ~/python/Python-3.6.7/
./configure --prefix=/home4/grad4/wzhao1/python/python367
make
make install

如有报错,必须停下来解决问题。如果一直没有报错,则会安装成功。
注意:--prefix后面的参数必须是绝对路径,不能出现~...这样的相对路径。echo ~可以显示处当前用户~目录的绝对路径,如/home4/grad4/wzhao1--prefix后面的参数简单理解,就是windows下的安装路径。
注意:以上过程是自动化编译,./configure这种可运行文件一般显示为绿色,它的作用是根据当前环境,制定编译策略,即MakefileC/C++语言与javapythonscalaR等高度现代化的编程语言不同,它的部分语言特性是根据编译时环境而定的,这一点颇受诟病。如longint型的数据类型长度竟然取决于编译时环境。

验证安装1
cd ~/python/python367/bin
./python3.6

如果python命令行正常启动,且显示版本也是正确的3.6.7,则安装成功。

备份编译包

同一环境,尤其是同一服务器下通常不需要重新编译,只要有人编译出一份并备份保存,所有人都能直接下载使用。为了这个目的,以及备份的目的,我们要把编译结果保存成压缩包。

cd ~/python
tar cvf python367.tgz python367
建立软连接

软连接可以简单理解为windows下的快捷方式,建立软连接的目的是为了更方便地使用我们安装的python。从这个步骤开始都不做,python也能正常使用。
进入~/python/python367/bin下查看目前的情况。

ls -lh

可以看到,软连接是浅蓝色,并标注了它指向的目标。如python3 -> python3.6,而且可以看到python3.6的文件大小是12M,而python3的大小是9(字节)。
我们建立名为pythonpip的软连接。

ln -s python3.6 python
ln -s pip3.6 pip
配置环境变量

修改文件~/.bashrc,添加python3.6.7环境变量。
注意:这个文件内的变量是用户变量。系统变量在/etc/profile

cd ~
vim .bashrc

注意:用vim进行编辑时,不可使用鼠标。屏幕下端是状态栏。打开文件时,默认为浏览状态。输入ai可以进入编辑状态。按ESC回到浏览状态,在浏览状态下,输入:q!强制退出不保存,输入:wq保存退出。

export PYTHON_HOME="~/python/python367"
export PATH="$PYTHON_HOME/bin:$PATH"

修改完环境变量后,不会立即生效。用这个命令让环境变量立即生效。

source .bashrc
验证安装2
python --version
pip --version

显示下列结果即安装成功

Python 3.6.7
pip 10.0.1

今后该用户的shell里只要输入pythonpip,默认就是使用刚才安装的pythonpip

python3.6.7中安装pytorch

下载pytorch

在 https://pytorch.org 找到合适的安装包,得到下载链接后进行下载

wget https://download.pytorch.org/whl/cpu/torch-1.0.1.post2-cp36-cp36m-linux_x86_64.whl
使用pip安装pytorch
pip install torch-1.0.1.post2-cp36-cp36m-linux_x86_64.whl
pip install torchvision

注意:torch-1.0.1.post2-cp36-cp36m-linux_x86_64.whl不能改名,因为pip会严格检查文件名是否符合当前python版本,不符合则拒绝安装。

验证安装
python

import torch
import torchvision

不报错则安装成功。

Pycharm下使用pytorch

在新建工程的时候选择existing interpreter,指定之前安装的python.exe即可。(即~/python/python367
对于已经存在的工程,可以按如下步骤操作(如果project interpreter里面有我们要的python.exe,就不需要再add了)
Anaconda+Pycharm环境下的PyTorch配置方法_第3张图片

你可能感兴趣的:(pytorch,pycharm,anaconda,python,conda,实践经验)