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

在同一台机器上, 2 个 Python 项目需要使用同一个库,但是这 2 个项目使用的同一个库的版本号是不一样的,怎么解决呢?

  •  
  •   Zarten · 2019-06-13 10:45:20 +08:00 · 3504 次点击
    这是一个创建于 1995 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如:
    项目 A 和项目 B
    项目 A 必须使用 pymysql 2.0 版本
    项目 B 必须使用 pymysql 4.0 版本
    但是这个机器只安装了 pymysql 4.0 版本

    为了使项目 A 和项目 B 同时在这台机器上运行,如何解决?除了使用虚拟环境和 docker 之外,还有什么解决方案吗?
    21 条回复    2020-09-17 10:01:45 +08:00
    hackcv
        1
    hackcv  
       2019-06-13 11:41:38 +08:00
    放到项目里
    lanshee
        2
    lanshee  
       2019-06-13 11:58:44 +08:00
    同 #1
    leishi1313
        3
    leishi1313  
       2019-06-13 12:50:43 +08:00 via Android
    不知道你不用虚拟环境的需求是什么,但是标准就是用 virtualenv。pyenv 可以给每个目录设置不同版本的 python,也可以达到你想要的,也可以配合 virtualenv 使用。其他就是放到项目里了,但是其实这几种本质上都是一样的
    Zarten
        4
    Zarten  
    OP
       2019-06-13 14:40:35 +08:00
    @leishi1313 @hackcv @lanshee 非常感谢你们
    mixure
        5
    mixure  
       2019-06-13 14:44:00 +08:00
    这要是 `Ruby`, 同包的不同版本可以同时存在一个环境中,用`gem` 引用特定版本 (我是菜鸟一只)
    superalsrk
        6
    superalsrk  
       2019-06-13 17:55:23 +08:00
    virtualenv 必备啊
    zzzmj
        7
    zzzmj  
       2019-06-13 18:39:16 +08:00
    最简单就是 用两个虚拟环境呗,也就花些安装依赖的时间
    janxin
        8
    janxin  
       2019-06-13 18:40:59 +08:00
    虚拟环境了解一下
    classyk
        9
    classyk  
       2019-06-13 18:42:14 +08:00
    python 可以直接拷贝一份。然后带路径运行即可
    ysc3839
        10
    ysc3839  
       2019-06-13 19:48:18 +08:00 via Android   ❤️ 1
    virtualenv 或者 pipenv。
    HowieWang
        11
    HowieWang  
       2019-06-13 19:58:44 +08:00 via Android
    虚拟环境挺好的。pipenv
    Cu635
        12
    Cu635  
       2019-06-13 20:02:53 +08:00
    项目 A 怎么这么奇葩?必须用低版本的?
    clericpy958
        13
    clericpy958  
       2019-06-14 00:34:37 +08:00
    既然楼主都提出问题了, 就别劝那些他已经知道的出路了吧

    shiv 和 PEP441 了解一下
    pypi.org/project/shiv/

    用了一段, 很多与全局 lib 冲突的优先级 bug 也都及时 fix 了, 还算可以一战的, 非 C 的话跨平台都不耽误
    clericpy958
        14
    clericpy958  
       2019-06-14 00:36:09 +08:00
    早些时候还特意写了通过 Python 官网的那个 embed zip 文件做了 Windows 一键分发的轮子, 也就是 "解释器+依赖" 一起打包, 没发现有什么问题
    conn4575
        15
    conn4575  
       2019-06-14 06:56:22 +08:00 via Android
    不知道为啥不能用虚拟环境,我不信你们线上机器就跑一个 python 服务
    widewing
        16
    widewing  
       2019-06-14 07:30:18 +08:00 via Android
    楼主不会把虚拟环境想象成虚拟机了吧。。
    Fris
        17
    Fris  
       2019-06-14 07:56:58 +08:00 via iPhone
    把包直接拷贝到项目里,简单粗暴
    JimmyTinsley
        18
    JimmyTinsley  
       2019-06-14 08:28:11 +08:00
    为啥不用 virtualenv 呢
    wizardoz
        19
    wizardoz  
       2019-06-14 12:17:07 +08:00
    virtualenv
    就算没遇到你这种情况我也要用 virtualenv
    1980744819
        20
    1980744819  
       2020-09-17 09:58:36 +08:00
    @leishi1313 不是不同版本的 python,是一个版本的 python,在不同地方 import 不同版本 pytorch
    1980744819
        21
    1980744819  
       2020-09-17 10:01:45 +08:00
    @conn4575 就算是用虚拟环境也只是单个 python 能单独 import 一个版本的 pytorch,这不解决问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1421 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:50 · PVG 07:50 · LAX 15:50 · JFK 18:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.