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
IVeverKB
V2EX  ›  Python

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

  •  
  •   IVeverKB · 2020-12-24 11:00:10 +08:00 · 2034 次点击
    这是一个创建于 1459 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    感谢

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

    1. 在联网的机器中:pip download -r requirements.txt -d packages
    2. 把 requirements.txt 以及 packages 目录整个传到另一个无网的机器上
    3. 在无网机器上创建好虚拟环境,然后 pip install -r requirements.txt -f packages
    ClericPy
        9
    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 有时候都因为编译器不一致出问题)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   885 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:01 · PVG 04:01 · LAX 12:01 · JFK 15:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.