博主头像
寰宇撷光

学习心得&经验分享

【经验分享】Python开发环境的配置

起因是这个学期正式学习Python程序设计,课程群里有很多人悲鸣Anaconda装不上、安装各种库总是出错云云,然后尝试回想当时配置环境时做的各种步骤以及解决的各种问题,发现都不太想得起来了,于是干脆开一篇博客来记一下配置开发环境这一经典的“万事开头难”系列问题。即使有时候懒得写了,也索性贴个链接指指路吧(笑

1 Python开发环境的配置

1.1 Anaconda及其使用

1.1.1 安装Anaconda

这一步比较基础,且网上已经有较多教程。只贴一些参考链接在这里。

1.1.2 在启动Powershell时默认载入Anaconda

将Anaconda目录加入系统环境变量

如果需要在系统默认的终端使用conda命令,则需要将Anaconda的安装目录加入系统环境变量Path中。此处不再赘述。

在PowerShell等终端中配置conda

在配置好环境变量后,就可以在普通终端运行conda命令了,但还需运行初始化命令完成所有操作。

运行:conda init powershell

参考资料:解决PowerShell无法使用conda的问题 - CSDN

1.1.3 使用Anaconda虚拟环境【解决多数版本冲突问题】

在很多情况下,不同的Python项目需要使用到不同的包。有时会遇到多个项目使用不同版本的同一个包,这时就会产生版本冲突问题,进而引发非常烦人的错误。Anaconda的虚拟环境解决了这一问题,如同虚拟机一样,将不同项目需要使用的包和模块分隔开放在不同的虚拟环境。既避免了版本冲突问题,也简化了项目的迁移。(在被迁移主机上构造一个一模一样的虚拟环境即可)

在终端中输入conda env list可查看当前已配置好的环境。

在Anaconda默认路径下配置新环境

在终端中可运行以下与环境操作相关的命令。

# 创建虚拟环境:
# -n后接的参数为需要的环境名字 python版本可以自定
conda create -n MyEnv python=3.7.1
# 激活虚拟环境:
conda activate MyEnv
# 退出虚拟环境:
conda deactivate
# 删除虚拟环境:
conda remove -n MyEnv --all

激活虚拟环境后,提示符最前面会有(MyEnv)表示当前已经激活了的虚拟环境。

在没有激活任何自定环境的状态下,会激活默认环境base.

在自定义路径下配置虚拟环境
# 创建虚拟环境:
# 路径名即环境名 接在--prefix后
conda create --prefix=F:\condaenv\env_name python=3.9
# 激活虚拟环境:
conda activate F:\condaenv\env_name
# 删除虚拟环境:
conda remove -p F:\condaenv\env_name --all

参考资料:Conda创建新环境 - CSDN

1.1.4 配置Anaconda国内镜像源【解决下载慢问题】

快速指路:Anaconda镜像使用帮助 | 清华大学开源镜像站

备选方案(没试过但应该有用):将Anaconda设置为国内镜像源 | CSDN

一般用清华的镜像就足够了,如果需要寻找更多镜像资源的话可以参阅校园网联合镜像站

1.2 Linux下多版本Python的配置(Ubuntu)

1.2.1 添加软件源

由于Ubuntu等Linux发行版的软件仓库中,通常不会具有最新版本的Python包,在某些开发项目有特定版本需求时将会变得很麻烦。因此我们可以引入PPA,便于安装特定版本的Python。

PPA 是由个人开发者或组织创建并托管的软件仓库,允许用户轻松地在 Ubuntu 系统中安装和更新软件包。PPA 托管在 Launchpad 上,这是由 Canonical 提供的一个平台,支持 Ubuntu 和相关发行版的开发者分发他们的软件。
PPA 的最大优势在于它可以提供比官方仓库中更新的版本,甚至是还在开发中的测试版本,这对于想要体验最新功能的用户尤其有用。

将包含多个版本Python的PPA添加到系统的流程如下:

# 更新软件包列表
sudo apt update

# 安装软件源管理工具
sudo apt install software-properties-common

# 添加 Python 版本源
sudo add-apt-repository ppa:deadsnakes/ppa

# 再次更新软件包列表
sudo apt update

在这之后,我们可以快捷地使用 apt 在系统中安装不同版本的Python。

sudo apt install python3.x

1.2.2 查看当前系统中安装的Python

有多种方法可以查看Linux上的Python,如下所示。

# 查看当前默认的Python版本
which python
# 直接打开Python就能看到
python --version

也可以批量查看所有的Python版本。

$ ls /usr/bin/python*

/usr/bin/python     /usr/bin/python3    /usr/bin/python3-pbr
/usr/bin/python2.7  /usr/bin/python3.8  /usr/bin/python3-unit2  

1.2.3 修改默认的Python版本

如果需要切换到另一个Python版本,可以使用update-alternatives更改系统的默认Python版本。该命令对于修改其他软件(如gcc等)的版本同样适用。

用于注册多个版本程序的命令格式如下:sudo update-alternatives --install <link> <name> <path> <priority>。使用方式如下所示:

# 查看当前客用的替代版本信息。若出现以下报错,说明尚未添加Python的替代版本,需要手动输入。
$ update-alternatives --list python
update-alternatives: 错误: 无 python 的候选项

# 输入当前可用的Python替代版本
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: 使用 /usr/bin/python2.7 来在自动模式中提供 /usr/bin/python (python) 

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2
update-alternatives: 使用 /usr/bin/python3.5 来在自动模式中提供 /usr/bin/python (python)

# 注册后 可以对命令进行优先级配置 选择默认版本
sudo update-alternatives --config gcc

# 同样也可以删除候选项
sudo update-alternatives --remove <name> <path> <priority>

我们使用了install选项为python程序创建符号链接。第一个参数为符号链接的目标路径;第二个参数为命令名;第三个参数为可执行文件的路径,可以使用ls查询;第四个参数为优先级,数字越大,被调用的优先级越高。

相关参考资料:

2 附加操作

2.1 在终端环境下配置代理

有时可能会需要在终端上进行一些下载操作,比如直接运行git clone或者wget。但如果资源在国外,下载速度往往只有几kb每秒,甚至网站干脆被ban导致无法下载。这时就需要使用一些魔法。

一般情况下终端的流量并不会走魔法通道,所以需要在终端中手动配置代理。

对于Windows Powershell,直接运行以下命令。

# 记得检查端口是否正确
$env:HTTP_PROXY="http://127.0.0.1:10809"
$env:HTTPS_PROXY="http://127.0.0.1:10809"

对于Windows的cmd终端,运行以下命令。

set http_proxy=http://127.0.0.1:10808
set https_proxy=http://127.0.0.1:10808
set all_proxy=socks5://127.0.0.1:10808

set HTTP_PROXY=http://127.0.0.1:10808
set HTTPS_PROXY=http://127.0.0.1:10808
set ALL_PROXY=socks5://127.0.0.1:10808

而对于Bash,可运行以下命令。

export http_proxy=127.0.0.1:10809
export https_proxy=127.0.0.1:10809
# 也可支持socks协议,在地址前加上`socks://`即可。
# 对于wget,由于不支持sock5机制,所以直接按照上面的方法会报错。需使用tsocks

需要注意的是,以上这些代理配置仅针对当前终端有效,退出后需要重新配置。当然也可以通过更改环境变量将代理设置持久化。这里不再赘述了。

【经验分享】Python开发环境的配置
https://www.marshuni.fun/archives/python_environment.html
本文作者 marshuni
发布时间 2023-02-26
许可协议 CC BY-NC-SA 4.0
发表新评论