我正在开发使用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安装进行任何更改?我是否过于复杂?