V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jiminjohn0402
V2EX  ›  Python

Python 目前用哪个版本好,离线使用该如何操作

  •  
  •   jiminjohn0402 · 2023-11-04 11:11:19 +08:00 · 4500 次点击
    这是一个创建于 414 天前的主题,其中的信息可能已经有所发展或是发生改变。

    起因:办公环境不能连外网且没有自建库,但是又想用 python 处理数据 需求:处理解析 csv 文件,然后转为 xlsx ,处理 csv 文件可能会比较复杂,会分组统计数量,模糊匹配,非空判断,解析多 csv 文件然后做关联导出等等 想法:自己下载安装包,第三方库 问题: 1 、目前下载了 python 3.9.18 ,是否合适和稳定(只是数据处理和生成 xlsx ) 2 、安装好之后第三方工具库一直没有办法使用,然后就想着下载然后离线安装 以安装 pandas 为例,遇到 numpy 没有,安装 numpy 出现 cython 没有,安装 cython 出现 vc++没有 所以有没有那种集成安装包,可以解压使用,一般也不要求新的功能,电脑一直无法连外网

    第 1 条附言  ·  2023-11-07 10:51:02 +08:00
    按照 miniconda 迁移环境方式搞好了,感谢各位大佬
    30 条回复    2023-11-08 14:42:56 +08:00
    Belmode
        1
    Belmode  
       2023-11-04 11:39:15 +08:00
    配好个虚拟机,在办公环境运行
    crackidz
        2
    crackidz  
       2023-11-04 11:41:46 +08:00   ❤️ 1
    你的需求看上去需要的是 conda
    Thymolblue
        3
    Thymolblue  
       2023-11-04 11:43:39 +08:00 via Android
    3.10 目前比较舒服,建议是直接搞个 miniconda 装好环境后把环境打包考到另外的电脑就能用
    leave8426
        4
    leave8426  
       2023-11-04 11:46:44 +08:00
    3.10 支持模式匹配
    Donahue
        5
    Donahue  
       2023-11-04 11:48:11 +08:00
    我感觉你的需求来说没有太大差别, 然后你需要的是 venv 管理虚拟环境, 在自己电脑装好之后所有包都在文件夹下面,压缩打包复制到办公环境就可以了
    jiminjohn0402
        6
    jiminjohn0402  
    OP
       2023-11-04 11:59:49 +08:00
    @crackidz
    @Thymolblue 有木有教程,我在家里电脑搞好,搞到公司电脑上
    just1
        7
    just1  
       2023-11-04 12:28:11 +08:00 via Android
    pyinstaller 编译出来也可以
    jianghu52
        8
    jianghu52  
       2023-11-04 12:38:14 +08:00
    支持 5 楼。我现在就是用的这种方案。另外,版本我用的是 3.10.据说性能比 3.9 的高不少。(当然,3.12 更高,但是不稳定)
    NoOneNoBody
        9
    NoOneNoBody  
       2023-11-04 13:22:02 +08:00   ❤️ 2
    用什么版本要看你项目的依赖,如果依赖是旧的,装新版也没用,一跑就报错,选所有依赖都能跑的最新版

    anaconda 需要教程(因为预装一堆包及有界面),anaconda 预装包太多,自己也装很多包的话容易有问题,参考下面“补充”
    miniconda 不预装依赖(有 cpython 之类,几个),不需要教程,就两三条命令就能用了,搞清目录结构就行

    miniconda 先安装好官方文件,先不要装任何包
    输入命令 conda create --name 环境名字[建议纯英文] python=py 版本
    这样就在 miniconda/envs 文件夹里面新建了各文件夹名为[你刚刚指定的环境名称],这个文件夹里面的结果几乎跟外面一样,也是和外面分开的,必要时把相关路径添加到系统环境参数 PATH

    输入命令 conda actvice 你刚刚指定的环境名称
    这样就进入这个环境(说的不是路径 cd 的进入),然后跑 pip install, conda install 或者脚本,都是用这个环境的 py 版本,依赖包也是装在 envs/xxx/Lib/site-packages 里面
    注意:如果某个项目跟随环境,运行前 “conda actvice ...”命令是必须的

    补充:在环境内用 conda install 还是 pip install ,区别参考网文,一般建议都是用 conda install ,但在实际使用中,我的经验是 conda 服务器不好连,国内源有时会跟官方不一致(虽然概率低,但我遇到了),而且 conda 每个包安装后都要将依赖轮询一遍,确保稳定性,好处明显,但包多的话,这个轮询很慢,甚至达小时级(冻住?),国外经常有人吐槽这个;我实际使用中,用 pip install 也能正常使用,导出环境参数也没问题,我基本是遇到编译错误的包,才用 conda install ,因为 conda 源是预编译的

    参考网文如何更改默认环境,原来默认是 "base",不在 envs 里面,就是 miniconda 首次安装时的版本,不用跑 active 命令就能用的版本,个人建议 base 不要作为项目运行环境,而且包容易版本冲突,包增多时越装越乱,base 应该作为一些通用脚本的运行环境,例如简单的文件批量处理,一些依赖很少的计算……

    至于 export/import 某个环境(仅参数),可参考网文,要保证不同设备一致性,就每次相同环境都装相同的包(含包的版本)
    一些要编译的包,直接 copy 不能保证一致性,虽然大部分是可用的,离线的话建议找跟 os 和 python 版本对应的 whl 文件安装

    以上说的是 Windwos ,linux 或类似架构,根据用户权限,环境的路径会不同,一般在用户文件夹内
    以上基本能用了,更详细的命令,再慢慢看文档好了
    NoOneNoBody
        10
    NoOneNoBody  
       2023-11-04 13:30:02 +08:00
    上面#9 ,python=py 版本,格式为 python=3.10 这样
    另有一些 typo ,不一一查了,能读懂就行
    NoOneNoBody
        11
    NoOneNoBody  
       2023-11-04 13:35:16 +08:00
    呃,%$%*(()_++_
    activate 居然打错了
    conda activate 环境名
    才对
    fbichijing
        12
    fbichijing  
       2023-11-04 14:12:55 +08:00
    看你的需求,可能一个 pandas 就足够了。

    至于 Python 版本的话,如果是自己用的,没有打包给别人用的情境,个人觉得就使用目前 Python 官网的最新稳定版本比较合适。Python 3.8 之后不支持 win7 ,有部分电脑还用着 win7 系统。

    "无法连外网"是不是可以理解是局域网里面的台式电脑。可能的话,还是搞一个无限网卡安装这些模块比较好。很多模块的运行都基于一些其他模块,在使用 pip 安装的时候都会直接全部安装完成。手动去一个一个安装没有实际操作过,但估计挺麻烦的。就以 pandas 来说,可能要安装 numpy, openpyxl 等等。

    默认安装的 pandas 不包含隐式导入的东西。比如你需要对 .xls 的文件进行读写,可能还需要安装 xlrd,xlwt 。这两个不包括在 pip 安装 pandas 的默认范围内。大概是 pandas 考虑 .xls 文件没什么人用,所以没写进 install_requires 里面吧。

    建议找个无限网卡安装,减少不必要的烦恼。节约点时间听下歌不好^_^
    fbichijing
        13
    fbichijing  
       2023-11-04 14:17:36 +08:00
    @NoOneNoBody 我讨厌 anaconda 。又不是不会装,这 anaconda 装了一大堆东西... 不过如果是在无法联网的电脑上的话,或不失为一个办法。

    还是不喜欢 ananconda.我喜欢简洁的东西,不喜欢全家桶。
    fbichijing
        14
    fbichijing  
       2023-11-04 14:23:18 +08:00
    目前 python 最新稳定版本是 3.12.0 。pandas pypi 写着的支持版本目前(2023-11-04 14:22:03)最高是到 3.11 。所以,可考虑 Python 版本 [3.8, 3.11]
    zq11211277
        15
    zq11211277  
       2023-11-04 14:35:24 +08:00
    内网环境编程真的恼火
    NoOneNoBody
        16
    NoOneNoBody  
       2023-11-04 14:37:49 +08:00
    @fbichijing #13
    我也讨厌 anaconda 标准版,装 miniconda 好了,就装了个 conda 环境和自带编译器,啥都没有干干净净
    我搞不定 Windows 编译环境(不是这家的),经常遇到编译错误,说什么 cl.exe 找不到,明明就在 PATH 里面
    我写的东西是大型玩具,不是给别人用的,不想花时间在配置环境上面,尤其要搞清编译问题,对我来说没一头半个月不行
    k2wang
        17
    k2wang  
       2023-11-04 14:51:33 +08:00
    @fbichijing pandas 已经支持 Python 3.12 了,https://pypi.org/project/pandas/#files
    fbichijing
        18
    fbichijing  
       2023-11-04 15:33:02 +08:00   ❤️ 1
    @k2wang

    我看左边的

    Programming Language

    Cython
    Python
    Python :: 3
    Python :: 3 :: Only
    Python :: 3.9
    Python :: 3.10
    Python :: 3.11

    没写 3.12 ,不过 Built Distributions 似乎有 3.12 的相关文件。不敢肯定。如果站在楼主的情境下,我应该会在 3.8 和 3.11 之间做选择。如果不考虑打包给老电脑使用和一些库不支持新版本,3.11.* 应该是不二之选。

    在这种时候,在适合需求的前提下安装最新的版本,肯定比后续更新来得更干脆。
    encro
        19
    encro  
       2023-11-04 15:34:31 +08:00
    pyenv 。miniconda ,能满足大部分需求了,如果没有一些奇怪的包,可以试试 pdm.
    python 版本好像主流是 3.10 左右。都需要根据你用的包兼容性来决定。
    piuu
        20
    piuu  
       2023-11-04 15:57:03 +08:00
    python embed 便携版, 不考虑安装路径
    Drahcir
        21
    Drahcir  
       2023-11-04 20:00:56 +08:00
    无脑 miniconda 。省心省力。
    YsHaNg
        22
    YsHaNg  
       2023-11-04 21:10:35 +08:00
    venv https://docs.python.org/3/library/venv.html#creating-virtual-environments 别的电脑上建立好环境 copy 文件夹就可以了
    ADMlN
        23
    ADMlN  
       2023-11-04 22:59:49 +08:00   ❤️ 1
    我之前都是在外网电脑用 pip download 下载第三方库的,pip download 下载的时候会自动下载依赖,下载完之后,在外网电脑用 venv 建个虚拟环境,用 pip install -f 安装包目录 --no-index 安装测试一遍下载的包,测试过没问题了,把整个安装包目录拷到内网,重复一遍安装命令,就可以了
    kingmo888
        24
    kingmo888  
       2023-11-05 00:49:28 +08:00
    你这种的话实际不是版本号问题,
    使用 embed 版本,在其他可访问公网的机器上把需要的配置好后,整个文件夹打包到目标电脑即可。全绿色。
    dayeye2006199
        25
    dayeye2006199  
       2023-11-05 01:23:06 +08:00
    miniconda + conda-pack

    conda pack -n my_env -o out_name.tar.gz
    去目标机上解压就可以用了。
    huoshen
        26
    huoshen  
       2023-11-05 07:36:51 +08:00
    咋说呢, 看你的需求, 虽然上面有人说不要用 anaconda, 但我觉得你既然没法连接外网, 那还是弄个大而全的安装包比较好, 去这里找你对应系统版本的东西吧, 自带的东西, 带有 numpy pandas 等等常用的都有了, 再装一下 excel 相关的东西就行了.
    https://www.anaconda.com/download#downloads
    lybcyd
        27
    lybcyd  
       2023-11-05 10:31:00 +08:00
    用 pip download 提前下载好,然后用--no-index -f 包目录的方式安装
    gumuxi
        28
    gumuxi  
       2023-11-05 14:57:23 +08:00
    有互联网的环境:cd pip_packages && pip donwload -r requirements.txt
    没互联网的内网:pip install -r requirements.txt --no-index -f ./pip_packages
    jiminjohn0402
        29
    jiminjohn0402  
    OP
       2023-11-06 10:03:46 +08:00
    @NoOneNoBody conda 搞好了,还是比较方便的,非常感谢
    makejohn2015
        30
    makejohn2015  
       2023-11-08 14:42:56 +08:00
    我是在外网 pip download xxx , 然后复制过去,直接内网 pip install xxx1 xxx2 这样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2679 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:05 · PVG 23:05 · LAX 07:05 · JFK 10:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.