我正在开发使用Jupyter笔记本和ipywidgets的应用程序,用于后端代码库的GUI前端 . 我遇到了以正常方式分发/安装软件包的问题,例如:

所需库版本(例如pandas)之间的

  • 意外差异
    当用户在该库的旧版本上维护和使用自己的代码库时,
  • requirements.txt强制更新到更新版本的库 .

我认为pipenv可能能够解决这个问题,但我想在走这条路之前检查我的用法是否正确 .

要求:

  • 用户需要能够多次在同一个env中重启Jupyter Notebook,从头开始运行程序,直到新版本可用 .

  • 用户都在Mac上 .

  • 任何安装都不应该改变 site-packages 等,对任何用户当前拥有的python设置都没有影响 .


Workflow concept

发展:

  • 在pipenv环境中开发(我使用Pycharm,因此这是相对简单的) .

  • 在Pipfile [requires] 中包含 jupyter ,即使 jupyter 未在我的源中的任何位置导入 .

  • 当我的代码库需要新包时,使用 pipenv install new_package ,并维护Pipfile(尊重--dev用于测试包等) .

用户安装

  • 生成包含源代码,setup.py等以及Pipfile和Pipfile.lock的zip文件 .

  • 用户将zip文件解压缩到其计算机上的已知位置 .

  • 在终端中,导航到解压缩的文件夹位置,然后运行 pipenv install .

使用:

  • 在终端中,导航到文件夹位置,然后运行 pipenv shell

  • 运行 pipenv run jupyter notebook 重新加载env和笔记本 .

  • 完成后,关闭笔记本电脑并运行 exit 以关闭环境 .

卸载env并升级到更新版本

  • 在终端中,导航到文件夹位置,然后运行 pipenv --rm .

  • 下载新的源zip并按照上述步骤操作 .


如果我理解,这应该确保任何人都可以在严格控制的环境中使用该发行版,而不对其现有的python安装进行任何更改?我是否过于复杂?