相关疑难解决方法(0)

Python依赖地狱:virtualenv和全局依赖之间的妥协?

到目前为止,我已经测试了各种方法来管理 Python中的项目依赖项:

  1. 使用pip安装全局内容(节省空间,但迟早会让您遇到麻烦)
  2. pip&venv或virtualenv(管理有点痛苦,但很多情况下还可以)
  3. pipenv&pipfile(比venv/virtualenv稍微容易一些,但是慢和一些供应商锁定,虚拟环境隐藏在除了实际项目文件夹之外的其他地方)
  4. conda作为包和环境管理器(只要包装都在conda中可用,混合pip和conda有点hacky)
  5. 诗歌 - 我没试过这个
  6. ...

我对所有这些问题(除了1.)的问题在于我的硬盘空间填充速度非常快:我不是开发人员,我使用Python进行日常工作.因此,我有数百个小项目都在做他们的事情.不幸的是,项目的80%,我需要"大"套餐:numpy,pandas,scipy,matplotlib-你的名字.典型的小项目大约有1000到2000行代码,但在venv/virtualenv/pipenv中有800MB的包依赖性.实际上我有大约100多GB的硬盘充满了python虚拟依赖项.

而且,在每个虚拟环境中安装所有这些都需要时间.我在Windows中工作时,许多包不能被轻易从Windows安装点子:Shapely,Fiona,GDAL-我需要预编译的车轮克里斯托夫Gohlke.这很容易,但它会破坏大多数工作流程(例如,pip install -r requirements.txtpipenv install来自pipfile).我觉得我40%安装/更新包依赖,只有60%的时间编写代码.此外,没有这些包管理真正与出版和测试代码的帮助,所以我需要其他工具如setuptools,tox,semantic-release,twine...

我和同事们聊过,但他们都面临着同样的问题,似乎没有人能找到真正的解决方案.我在想,如果有有一些包,例如,你在大多数项目中,全球范围内安装使用的那些的方法-例如numpy,pandas,scipy,matplotlib将在PIP安装C:\Python36\Lib\site-packages或使用condaC:\ProgramData\Miniconda3\Lib\site-packages-这些都是非常发达的包不经常打破一切.如果,我想在我的项目中很快解决这个问题.

其他的事情会去当地的virtualenv文件夹-我很想我的当前工作流从移动pipenvconda.

这种方法有意义吗?至少最近在python中有很多开发,也许还有一些我还没看到的东西.是否有任何的最佳实践指导设置如何文件这样的混合全局-局部环境,例如,如何维护setup.py,requirements.txtpyproject.toml通过Gitlab,Github上共享等发展项目?有什么陷阱/警告?

克里斯·沃里克(Chris Warrick)的这篇精彩博文也完全解释了这一点.

python dependency-management python-3.x

12
推荐指数
2
解决办法
1986
查看次数

标签 统计

dependency-management ×1

python ×1

python-3.x ×1