pipenv 和 pyenv+virtualenv 都可以实现特定版本的虚拟环境
pipenv 似乎还可以实现特定包的 dev 版本和 prod 版本
除了这些功能 pipenv 还有哪些优势吗?
1
bonfy 2017-10-04 12:06:41 +08:00 via iPhone
pipenv shell 比 source xxx 方便多了?
|
2
valkyrja OP @bonfy 话说这种使用情况多吗...好像一般都是 cd 到项目目录然后再 activate virtualenv 的, pyenv 可以在项目文件夹下加.python-version, cd 进去的时候就自动 activate 了...
|
3
xlui 2017-10-04 14:13:22 +08:00 via Android
@valkyrja 为什么不用 alias....
alias venv="source ~/venv/bin/activate" alias proj="cd 项目目录" alias t="proj;venv" |
4
lonelygo 2017-10-04 14:58:33 +08:00
pyenv local tensorflow2.7
可以吧目录设置成特定版本,cd 进目录自动切换环境,如下: # kevin @ KevinMBP in ~ [13:09:26] $ cd Tensorflow (tensorflow2.7) # kevin @ KevinMBP in ~/Tensorflow [14:55:18] $ cd ../Tensorflow3 (tensorflow3.6) # kevin @ KevinMBP in ~/Tensorflow3 [14:57:33] $ |
6
lightening 2017-10-04 16:32:23 +08:00 1
支持 Pipfile 和 Pipfile.lock
|
8
valkyrja OP @lightening 感觉这个和 requirements 差不多啊。。。都可以指定版本的
|
9
valkyrja OP @AlexaZhou 一个项目目录对应一个虚拟环境,在 a 目录用 b 环境才会觉得很混乱吧。。。其实我经常忘记切 virtualenv,自动切反而有帮助。。
|
12
lightening 2017-10-05 16:51:21 +08:00
@valkyrja requirements 混淆了两件事,一是你想要哪些 package,二是系统当前能运行的 package (包含所有依赖)的严格版本。
https://www.kennethreitz.org/essays/a-better-pip-workflow 再后来他就做了 Pipenv。 |
13
AlexaZhou 2017-10-05 19:20:03 +08:00 via iPhone
@valkyrja
一个目录对应一个环境是没有问题的。主要是通过 Hack CD 命令来实现有点蛋疼,很多种情况下容易引起混乱。 我随便举几个,例如: 1,用户使用的是不同的 bash 还能不能支持? 2,当使用非当前用户登陆系统时,能不能支持? 3,软件通过命令行调用 python 脚本时,在软件执行过程中切换到这个目录还能不能支持? 4,如果有其他程序也 hack 也 CD 命令来实现对应的功能,是否会导致其中的一个不能用? 这些都很让人困惑,所以我更倾向手动切换,靠谱而让人放心 |
14
sunwei0325 2017-10-12 04:44:09 +08:00
折腾过好多种环境隔离工具, 最后发现还是 virtualenvwrapper 好用
|