起因:办公环境不能连外网且没有自建库,但是又想用 python 处理数据 需求:处理解析 csv 文件,然后转为 xlsx ,处理 csv 文件可能会比较复杂,会分组统计数量,模糊匹配,非空判断,解析多 csv 文件然后做关联导出等等 想法:自己下载安装包,第三方库 问题: 1 、目前下载了 python 3.9.18 ,是否合适和稳定(只是数据处理和生成 xlsx ) 2 、安装好之后第三方工具库一直没有办法使用,然后就想着下载然后离线安装 以安装 pandas 为例,遇到 numpy 没有,安装 numpy 出现 cython 没有,安装 cython 出现 vc++没有 所以有没有那种集成安装包,可以解压使用,一般也不要求新的功能,电脑一直无法连外网
1
Belmode 2023-11-04 11:39:15 +08:00
配好个虚拟机,在办公环境运行
|
2
crackidz 2023-11-04 11:41:46 +08:00 1
你的需求看上去需要的是 conda
|
3
Thymolblue 2023-11-04 11:43:39 +08:00 via Android
3.10 目前比较舒服,建议是直接搞个 miniconda 装好环境后把环境打包考到另外的电脑就能用
|
4
leave8426 2023-11-04 11:46:44 +08:00
3.10 支持模式匹配
|
5
Donahue 2023-11-04 11:48:11 +08:00
我感觉你的需求来说没有太大差别, 然后你需要的是 venv 管理虚拟环境, 在自己电脑装好之后所有包都在文件夹下面,压缩打包复制到办公环境就可以了
|
6
jiminjohn0402 OP |
7
just1 2023-11-04 12:28:11 +08:00 via Android
pyinstaller 编译出来也可以
|
8
jianghu52 2023-11-04 12:38:14 +08:00
支持 5 楼。我现在就是用的这种方案。另外,版本我用的是 3.10.据说性能比 3.9 的高不少。(当然,3.12 更高,但是不稳定)
|
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 或类似架构,根据用户权限,环境的路径会不同,一般在用户文件夹内 以上基本能用了,更详细的命令,再慢慢看文档好了 |
10
NoOneNoBody 2023-11-04 13:30:02 +08:00
上面#9 ,python=py 版本,格式为 python=3.10 这样
另有一些 typo ,不一一查了,能读懂就行 |
11
NoOneNoBody 2023-11-04 13:35:16 +08:00
呃,%$%*(()_++_
activate 居然打错了 conda activate 环境名 才对 |
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 里面吧。 建议找个无限网卡安装,减少不必要的烦恼。节约点时间听下歌不好^_^ |
13
fbichijing 2023-11-04 14:17:36 +08:00
@NoOneNoBody 我讨厌 anaconda 。又不是不会装,这 anaconda 装了一大堆东西... 不过如果是在无法联网的电脑上的话,或不失为一个办法。
还是不喜欢 ananconda.我喜欢简洁的东西,不喜欢全家桶。 |
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]
|
15
zq11211277 2023-11-04 14:35:24 +08:00
内网环境编程真的恼火
|
16
NoOneNoBody 2023-11-04 14:37:49 +08:00
@fbichijing #13
我也讨厌 anaconda 标准版,装 miniconda 好了,就装了个 conda 环境和自带编译器,啥都没有干干净净 我搞不定 Windows 编译环境(不是这家的),经常遇到编译错误,说什么 cl.exe 找不到,明明就在 PATH 里面 我写的东西是大型玩具,不是给别人用的,不想花时间在配置环境上面,尤其要搞清编译问题,对我来说没一头半个月不行 |
17
k2wang 2023-11-04 14:51:33 +08:00
@fbichijing pandas 已经支持 Python 3.12 了,https://pypi.org/project/pandas/#files
|
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.* 应该是不二之选。 在这种时候,在适合需求的前提下安装最新的版本,肯定比后续更新来得更干脆。 |
19
encro 2023-11-04 15:34:31 +08:00
pyenv 。miniconda ,能满足大部分需求了,如果没有一些奇怪的包,可以试试 pdm.
python 版本好像主流是 3.10 左右。都需要根据你用的包兼容性来决定。 |
20
piuu 2023-11-04 15:57:03 +08:00
python embed 便携版, 不考虑安装路径
|
21
Drahcir 2023-11-04 20:00:56 +08:00
无脑 miniconda 。省心省力。
|
22
YsHaNg 2023-11-04 21:10:35 +08:00
venv https://docs.python.org/3/library/venv.html#creating-virtual-environments 别的电脑上建立好环境 copy 文件夹就可以了
|
23
ADMlN 2023-11-04 22:59:49 +08:00 1
我之前都是在外网电脑用 pip download 下载第三方库的,pip download 下载的时候会自动下载依赖,下载完之后,在外网电脑用 venv 建个虚拟环境,用 pip install -f 安装包目录 --no-index 安装测试一遍下载的包,测试过没问题了,把整个安装包目录拷到内网,重复一遍安装命令,就可以了
|
24
kingmo888 2023-11-05 00:49:28 +08:00
你这种的话实际不是版本号问题,
使用 embed 版本,在其他可访问公网的机器上把需要的配置好后,整个文件夹打包到目标电脑即可。全绿色。 |
25
dayeye2006199 2023-11-05 01:23:06 +08:00
miniconda + conda-pack
conda pack -n my_env -o out_name.tar.gz 去目标机上解压就可以用了。 |
26
huoshen 2023-11-05 07:36:51 +08:00
咋说呢, 看你的需求, 虽然上面有人说不要用 anaconda, 但我觉得你既然没法连接外网, 那还是弄个大而全的安装包比较好, 去这里找你对应系统版本的东西吧, 自带的东西, 带有 numpy pandas 等等常用的都有了, 再装一下 excel 相关的东西就行了.
https://www.anaconda.com/download#downloads |
27
lybcyd 2023-11-05 10:31:00 +08:00
用 pip download 提前下载好,然后用--no-index -f 包目录的方式安装
|
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 |
29
jiminjohn0402 OP @NoOneNoBody conda 搞好了,还是比较方便的,非常感谢
|
30
makejohn2015 2023-11-08 14:42:56 +08:00
我是在外网 pip download xxx , 然后复制过去,直接内网 pip install xxx1 xxx2 这样
|