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

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

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

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

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

感谢

相关文章

8 thoughts on “有对虚拟环境熟悉的大佬吗

  1. 复用原来的环境有什么问题吗?既然是无网环境,你代码怎么上去的时候,把你需要的 whl 文件和代码一起带上去,就离线安装也可以。

  2. @yuanxing008 #1
    @614457662 #2
    本地包是指 whl 离线安装包吗,其实也不是不可以但导入导出要申请过程麻烦。所以现在问是否在不用离线安装包的情况下,就是使用原有虚拟环境文件夹的资源就可以复用一下想要的包,一定程度上简化一下程序吧。

  3. 默认是在 site-package 下面,其实 Python 找包就是从 sys.path 去找的, 虚拟环境 1:python shell> import sys print(sys.path)

  4. 亲可以离线安装的,首先把你所有的依赖都生成到 requirements.txt 中

    1. 在联网的机器中:pip download -r requirements.txt -d packages
    2. 把 requirements.txt 以及 packages 目录整个传到另一个无网的机器上
    3. 在无网机器上创建好虚拟环境,然后 pip install -r requirements.txt -f packages

  5. 最近也做这种多机发布的活, 现在用自带 zipapp 打包 pyz 那个协议, 发布时候就是推到多个机器一起挂载的那个 nas 上, 运行就直接 python3 xxx.pyz abc.py. 没有 .so / .pyd 那种动态依赖的情况下, 单个 zip 文件发布和运行都很方便, 就算有也没事, 解压就能使了

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

发表评论

邮箱地址不会被公开。 必填项已用*标注