有对虚拟环境熟悉的大佬吗

2020-12-24 11:00:10 +08:00
 IVeverKB

虚拟环境是直接用 python 自带的 venv 命令装的

无网环境,已知虚拟环境 1 有我需要的包 A,虚拟环境 2 没有,那能不能直接从虚拟环境 1 的文件夹里找到包 A 对应的文件拷贝到虚拟环境 2 中呢,如果可以的话需要拷贝哪些文件?

另,如果所需的新虚拟环境 python 包跟已有的虚拟环境 1 一模一样,在不共用一个虚拟环境的前提下,我是否能将虚拟环境 1 直接拷贝到我想要的路径,并且更改虚拟环境文件夹的名字?或者需要做哪些改动才能达到我想要的效果?

网上找的一般都是用 requirements.txt 和 pip install,但我现在遇到无网的情况,望指点

感谢

1855 次点击
所在节点    Python
9 条回复
yuanxing008
2020-12-24 11:06:11 +08:00
pip install 也不是说一定要网络的 可以装本地包的
614457662
2020-12-24 11:07:56 +08:00
复用原来的环境有什么问题吗?既然是无网环境,你代码怎么上去的时候,把你需要的 whl 文件和代码一起带上去,就离线安装也可以。
gstqc
2020-12-24 11:10:15 +08:00
1. 复制 venv/lib/python<version>/site-packages/<package_name>
2. 同一个发行版可以的
IVeverKB
2020-12-24 11:12:20 +08:00
@yuanxing008 #1
@614457662 #2
本地包是指 whl 离线安装包吗,其实也不是不可以但导入导出要申请过程麻烦。所以现在问是否在不用离线安装包的情况下,就是使用原有虚拟环境文件夹的资源就可以复用一下想要的包,一定程度上简化一下程序吧。
YouLMAO
2020-12-24 11:14:51 +08:00
Conda 大师来了
xia0pia0
2020-12-24 11:15:20 +08:00
默认是在 site-package 下面,其实 Python 找包就是从 sys.path 去找的, 虚拟环境 1:python shell> import sys print(sys.path)
IVeverKB
2020-12-24 11:31:27 +08:00
@gstqc #3 谢谢小熊维尼!!
@xia0pia0 #6 谢谢懂了!
frostming
2020-12-24 12:05:30 +08:00
亲可以离线安装的,首先把你所有的依赖都生成到 requirements.txt 中

1. 在联网的机器中:pip download -r requirements.txt -d packages
2. 把 requirements.txt 以及 packages 目录整个传到另一个无网的机器上
3. 在无网机器上创建好虚拟环境,然后 pip install -r requirements.txt -f packages
ClericPy
2020-12-24 21:34:16 +08:00
最近也做这种多机发布的活, 现在用自带 zipapp 打包 pyz 那个协议, 发布时候就是推到多个机器一起挂载的那个 nas 上, 运行就直接 python3 xxx.pyz abc.py. 没有 .so / .pyd 那种动态依赖的情况下, 单个 zip 文件发布和运行都很方便, 就算有也没事, 解压就能使了

目前没发现大问题. 打包 pyz 之前用的 shiv, 现在在自己写. 总之 zip 文件里其实放的就是一堆 pip 下下来的包或者自己添加进去的依赖, 只要注意一下编译相关的冲突就好了, 比如跨平台(Linux 编译的没法在 win 上)或者跨 python 版本(3.7 和 3.8 有时候都因为编译器不一致出问题)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/738506

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX