Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Modules 配置之 Python

Modules 配置之 Python

作者头像
zhonger
发布于 2023-03-23 13:19:54
发布于 2023-03-23 13:19:54
76200
代码可运行
举报
文章被收录于专栏:仲儿的专栏仲儿的专栏
运行总次数:0
代码可运行

前言

  近年来得益于其轻量、易学易用、第三方支持依赖库多的特点,Python 语言大量被用于机器学习相关的研究、项目开发。在学术界,有以 Scikit-Learn 为代表的全能机器学习库;在产业界,有以 TensorFlowPyTorch 为代表的生产级机器学习模型计算框架。(当然,学术界实际上构建大规模深度学习模型时也会用到 PyTorch 等计算框架。)但对于大多数人来说,学习这些库、框架或者借助它们从事某些研究、项目开发时,可能还是在用自己的笔记本、台式机。哪怕是在高校的实验室里,这种事情也是屡见不鲜。因此,有交互界面、相对容易上手的 Anaconda 可能会作为大家管理 Python 环境的首选。

  当我们在用 Python 编写一些代码,而代码一次运行不可能在短短几秒、几分钟内得到结果时,将任务提交给高性能工作站或者集群作业系统就显得格外有效。尤其是当应用规模较大、计算迭代次数较多时,非交互式的作业提交方式会变得更加有利。毕竟如果是用自己的笔记本运行着这么大的计算,资源基本上都被计算占用了,根本没办法用笔记本去干点别的事情。甚至说,计算还会使得 CPU 等核心部件温度上升,从而影响计算性能。这样比较下来,不得不说提交任务给高性能工作站或者集群作业系统是多么明智的选择。

  其实,Anaconda 在没有交互界面的服务器操作系统上也还是可以使用的,我们可以使用其免费的精简版 —— miniconda。虽然 miniconda 已经是精简版了,但和原生 Python 环境比起来还是要多不少东西的。从高性能计算环境的角度来看,使用 Modules 直接管理 Python 环境实际上更加贴近原生,也更加有利于用户与其他环境搭配使用。比如说安装 Python 的 MPI 支持库 —— MPI4PY,仅需要通过 Modules 管理工具加载 Python 和 MPI 两个基础环境,使用 pip3 install mpi4py 命令即可安装。

实践

  将 Python 环境纳入 Modules 管理的步骤就是两步:第一步,编译源代码及安装;第二步,添加 Modules 配置文件。当然,最开始还是需要确认一下编译环境是否完备以及文件夹是否准备好。

环境及文件夹准备

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 安装编译环境
sudo apt install -y build-essential libbz2-dev libdb-dev \
  libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
  libncursesw5-dev libsqlite3-dev libssl-dev \
  zlib1g-dev uuid-dev tk-dev wget
  
# 准备文件夹
sudo mkdir -p /opt/python/3.10.6

编译及安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 下载源代码
cd /tmp
wget -c https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tar.xz

# 解压源代码
tar xf Python-3.10.6.tar.xz

# 配置安装路径及编译选项
cd Python-3.10.6
./configure --prefix=/opt/python/3.10.6 --enable-optimizations --with-lto 

# 编译及安装
make && sudo make install

配置 Modules

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo mkdir -p /opt/modules/modulefiles/py
sudo vim /opt/modules/modulefiles/py/3.10.6

  首先如上命令准备文件夹,并新建 module 配置文件,内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#%Module
proc ModulesHelp { } {
    puts stderr \tThis module file will load Python 3.10.6"
}

module-whatis  "Enable Python 3.10.6"

eval set  [ array get env HOME ]
set basedir /opt/python/3.10.6
prepend-path PATH "${basedir}/bin"
prepend-path LIBRARY_PATH "${basedir}/lib"
prepend-path LD_LIBRARY_PATH "${basedir}/lib"
prepend-path INCLUDE_PATH "${basedir}/include"
prepend-path LD_INCLUDE_PATH "${basedir}/include"

验证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查看所有可用模块
╰─$ module ava
-------------------------- /opt/modules/modulefiles ---------------------------
dot  module-git  module-info  modules  null  py/3.10.6  use.own

Key:
modulepath
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 加载 python 3.10.6 环境,并确认已加载模块
╰─$ module load py/3.10.6
╰─$ module list
Currently Loaded Modulefiles:
 1) py/3.10.6
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 确认目前 python 版本
╰─$ python3 -V
Python 3.10.6

使用

  由于以上操作将 Python 3.10.6 安装到了一个系统文件夹中,编译完成后会出现如下警告提示。不过无须担心,普通用户可以通过 venv 虚拟环境工具正常使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Installing collected packages: setuptools, pip
  WARNING: The scripts pip3 and pip3.10 are installed in '/opt/python/3.10.6/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-22.2.1 setuptools-63.2.0
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

  如下所示,当已经如验证部分加载好 python 3.10.6 模块后,使用以下命令新建虚拟环境、激活后即可使用。

小提示

   新建虚拟环境时最后的参数 env 是指虚拟环境的名字,我们可以取任意符合 python 规则的字符串作为虚拟环境名字。值得注意的是,python 虚拟环境有关的文件将会被安装在命令执行的当前目录下的同名文件夹中。为了便于管理和使用,建议将所有的 python 虚拟环境都放置在同一目录下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 新建 env 虚拟环境
╰─$ python3 -m venv env

# 激活 env 虚拟环境
╰─$ source env/bin/activate

# 可以看到 <env> 的环境提示
# 尝试升级 pip,可以看到成功升级 
╭─zhonger@lep-u ~ ‹env›
╰─$ pip3 install -U pip
Requirement already satisfied: pip in ./env/lib/python3.10/site-packages (22.2.1)
Collecting pip
  Using cached pip-23.0.1-py3-none-any.whl (2.1 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 22.2.1
    Uninstalling pip-22.2.1:
      Successfully uninstalled pip-22.2.1
Successfully installed pip-23.0.1

# 取消激活 env 虚拟环境
╰─$ deactivate

有趣的问题

  如果使用 module 提供的 python 模块创建了虚拟环境后,实际运行虚拟环境时还需要使用 module 加载 python 模块吗?答案是不需要。虚拟环境的本质是拷贝运行相同命令所需的必要文件,如下对比查看一下 python 模块和 env 虚拟环境的顶级目录。可以发现,两者的差别不是很大。env 虚拟环境少了 share 目录,多了 pyvenv.cfg 文件。查看该文件可知,存在与 python 模块之间的关系的声明。再查看 bin 目录,可以看到 python 可执行命令用了链接的方式,pip 命令则是直接从原来的 python 模块复制过来的。于是,这就能允许普通用户自行管理 pip 命令和 python 库了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
╰─$ ls /opt/python/3.10.6
bin  include  lib  share

╰─$ ls env
bin  include  lib  lib64  pyvenv.cfg

╰─$ cat env/pyvenv.cfg
home = /opt/python/3.10.6/bin
include-system-site-packages = false
version = 3.10.6

╰─$ ll env/bin
total 36K
-rw-r--r-- 1 zhonger zhonger 8.9K Mar 20 15:20 Activate.ps1
-rw-r--r-- 1 zhonger zhonger 2.0K Mar 20 15:20 activate
-rw-r--r-- 1 zhonger zhonger  908 Mar 20 15:20 activate.csh
-rw-r--r-- 1 zhonger zhonger 2.1K Mar 20 15:20 activate.fish
-rwxrwxr-x 1 zhonger zhonger  234 Mar 20 15:20 pip
-rwxrwxr-x 1 zhonger zhonger  234 Mar 20 15:20 pip3
-rwxrwxr-x 1 zhonger zhonger  234 Mar 20 15:20 pip3.10
lrwxrwxrwx 1 zhonger zhonger    7 Mar 20 15:20 python -> python3
lrwxrwxrwx 1 zhonger zhonger   30 Mar 20 15:20 python3 -> /opt/python/3.10.6/bin/python3
lrwxrwxrwx 1 zhonger zhonger    7 Mar 20 15:20 python3.10 -> python3

参考资料

版权声明:如无特别声明,本文版权归 仲儿的自留地 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:《 Modules 配置之 Python 》

本文链接:https://cloud.tencent.com/developer/article/2245046

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
集群动态环境管理神器 Modules
  Modules 包是一款简化 shell 初始化的工具,允许用户在会话期间使用模块文件轻松切换环境。
zhonger
2022/12/10
1.6K0
KubeSphere 最佳实战:制作 Ansible 离线安装包实战指南
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 Ansible 离线安装包制作实战指南。
运维有术
2024/07/06
4400
KubeSphere 最佳实战:制作 Ansible 离线安装包实战指南
Python3虚拟环境venv
多项目共存的服务器,每个项目依赖的包可能不一样,比如项目A需要 utilset 0.0.3, 项目B需要utilset 0.4,这时候就需要隔离开,venv就是用来为一个应用创建一套“隔离”的Python运行环境。
闻说社
2025/01/22
1350
Python3虚拟环境venv
用虚拟环境实现开发隔离
在实际的项目中,是不是一定要用“最新版”的模块或包呢?不一定。实际的项目要求往往比较复杂,比如有一个比较“古老的”网站项目中使用了 Django 2.2(参阅第12章12.3节),现在又要新建一个网站,要求使用 Django 3 。如此,在本地计算机的开发环境中就出现了同一个包的不同版本冲突,如何解决?
老齐
2022/01/27
8520
一文了解virtualenv、pyvenv、pyenv、pyenv virtualenv
“生命苦短,我用 Python。”一句话说明了 Python 开发的便利性,这也是这么多开发者热衷 Python 的原因。
Coder Sam
2020/03/03
17.7K0
详解Python虚拟环境的原理及使用
本文先介绍虚拟环境的基础知识以及使用方法,然后再深入介绍虚拟环境背后的工作原理。(环境:在macOS Mojave系统上使用最新版本的Python 3.7.x)
昱良
2020/11/17
2.8K0
详解Python虚拟环境的原理及使用
python3解决 ModuleNotFoundError: No module named ‘_ssl’
1.首先进入Python-3.6.3目录,就是你解压后安装python3.6的目录文件。 \2. cd 到 Modules 目录里,找到Setup和Setup.dist文件,将下面几行注释去掉。
kirin
2020/11/26
10.2K0
python3解决 ModuleNotFoundError: No module named ‘_ssl’
Python虚拟环境介绍
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u011054333/article/details/82892075
乐百川
2019/07/02
6950
Python虚拟环境介绍
2024年,还不知道python-venv的实现原理?
之前写过如何管理python环境的文章,比较浅显,这次打算稍微深入一点,探究下我们最常用的python虚拟环境是如何实现的,也就是我们熟悉的那句指令
阿菇kinoko
2024/11/20
1920
python安装虚拟环境步骤_python虚拟环境迁移
http://blog.csdn.net/pipisorry/article/details/47008981
全栈程序员站长
2022/09/27
8.1K0
python安装虚拟环境步骤_python虚拟环境迁移
Python虚拟环境(pipenv、venv、conda一网打尽)[通俗易懂]
要搞清楚什么是虚拟环境,首先要清楚Python的环境指的是什么。当我们在执行python test.py时,思考如下问题:
全栈程序员站长
2022/09/27
48.3K0
Python虚拟环境(pipenv、venv、conda一网打尽)[通俗易懂]
如何在Debian 9上安装Python 3并设置编程环境
Python是一种灵活多样的编程语言,可用于许多用例,包括脚本,自动化,数据分析,机器学习和后端开发。1991年首次出版,其名称灵感来自英国喜剧组织Monty Python,开发团队希望使Python成为一种有趣的语言。快速设置,并以相对简单的方式编写并立即反馈错误,Python是初学者和经验丰富的开发人员的绝佳选择。Python 3是该语言的最新版本,被认为是Python的未来。
陈树丶
2018/11/05
4.8K0
Python 虚拟环境:原理解析与最佳实践
小王最近遇到了一个棘手的问题:他在维护两个 Python 项目,一个是去年开发的数据分析系统,依赖 TensorFlow 1.x;另一个是最近在做的预测模型,需要用到 TensorFlow 2.x 的新特性。每次切换项目时,他都要手动更改 Python 包的版本,这不仅繁琐,而且经常出错。
Piper破壳
2025/01/01
2920
python基础教程:虚拟环境
我们在写的Python程序的时候,经常会用到非标准库的包和模块,比如要求等非常有用的第三方包和模块。有时候也会用到某个包和模块的特定版本,可能是这个特定的版本修复了某个bug,或者是依赖的接口只有该版本有。也可能系统安装了Python 3.6,但应用程序要求3.7或Python 2.7。
一墨编程学习
2019/05/15
8590
Python | Scrapy必备之配置虚拟环境
虚拟环境是一个将不同项目所需求的依赖分别放在独立的地方的一个工具,它给这些工程创建虚拟的Python环境。它解决了“项目X依赖于版本2.x,而项目Y需要项目3.x”的两难问题,而且使你的全局site-packages目录保持干净和可管理。 virtualenv 是一个创建隔绝的Python环境的工具,virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。
咸鱼学Python
2019/10/09
1.1K0
Python | Scrapy必备之配置虚拟环境
[232]requests库作者另一神器Pipenv的用法
我们在运行 Python 项目的时候经常会遇到一些版本问题,例如 A 项目依赖于 Django 1.5,而 B 项目又依赖 Django 2.0,而我们的系统却只有一个 Python 解释器,我们所有的包都被装在了 Python 安装目录的 site-packages 目录下,所以 Django 只能是某个特定的版本,所以这样就会导致运行的时候导致 A 或 B 项目出现兼容问题。为了解决这个问题,我们可能会使用 virtualenv 来为项目创建一套独立的 Python 运行环境,或者我们可能会使用 Docker 容器来实现不同项目的隔离运行,但总的来说,它们使用起来其实并没有那么方便。另外在进行 Python 包管理时,requirements.txt 这样的包依赖标识文件也显得很鸡肋,在某些情况下可能会带来一些麻烦。为了解决这些问题,一个更加使用方便的包管理工具诞生了,叫做 Pipenv,接下来就让我们一起来了解一下它的用法。
周小董
2022/04/12
8990
如何在Ubuntu 18.04上安装Python 3并设置本地编程环境
Python是一种灵活的多功能编程语言,可用于许多实例中,在脚本撰写,自动化,数据分析,机器学习和后端开发方面具有优势。1991年首次出版,其名称灵感来自英国喜剧组织Monty Python,开发团队希望使Python成为一种有趣的语言。可以快速被设置,并以相对简单的方式编写并立即反馈错误,Python是初学者的绝佳选择但同样也是经验丰富的开发人员的绝佳选择。Python 3是该语言的最新版本,被认为是Python的未来。
物花无语
2018/10/09
2.9K0
如何在macOS上安装Python 3并设置本地编程环境
Python是一种多功能编程语言,可用于许多不同的编程项目。1991年首次出版,其名称灵感来自英国喜剧组织Monty Python,开发团队希望使Python成为一种有趣的语言。易于设置,并以相对简单的方式编写并立即反馈错误,Python是初学者和经验丰富的开发人员的绝佳选择。Python 3是该语言的最新版本,被认为是Python的未来。
藕丝空间
2018/10/10
3.7K0
python3 virtualenv
在安装了python3之后,在项目开发的过程中,使用pip3进行库安装都会下载安装到环境变量设置好的地方,也就是python3安装的根目录下。 但是如果同时要开发多个不同的应用项目,而不同应用项目对于同一个库需要适配不同的版本,这种情况怎么办呢?
Devops海洋的渔夫
2019/05/30
3.4K0
Python入门:在Debian系统安装Python 3
Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。 可用于许多不同的编程项目。这个名字的灵感源自英国喜剧组织Monty Python,开发团队希望让Python成为一种有趣的语言,并于1991年首次发布。Python易于设置,编写方式相对简单,并及时反馈错误,是初学者和经验丰富的开发人员的绝佳选择。Python 3是该语言的最新版本。
小翼111
2018/07/25
9.6K0
Python入门:在Debian系统安装Python 3
推荐阅读
相关推荐
集群动态环境管理神器 Modules
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验