如何在heroku cedar stack上使用virtualenv进行pip卸载?

2024-05-29 02:11:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图卸载heroku上的一个模块:

heroku运行bin/python bin/pip卸载任何

Pip在/app树中显示该模块,然后声称已安装该模块,但再次运行同一命令将显示该模块安装在/app树中的同一位置。

有没有办法让皮普·因斯塔尔成功?


Heroku run实例化一个新的dyno并仅运行该dyno中指定的命令。Dynos是短暂的,这就是为什么pip卸载的结果不能持久的原因。


Tags: 模块pip实例run命令appherokubin
3条回答

默认情况下,在部署之间缓存virtualenv。

要避免缓存包,可以运行:

heroku config:add BUILDPACK_URL=git@github.com:heroku/heroku-buildpack-python.git#purge

这样,在您推动一些更改之后,一切都将从头开始构建。要启用缓存,只需删除BUILDPACK_URL config变量。

现在要卸载特定程序包:

  1. requirements.txt中删除相应的记录
  2. 提交并推送更改。

感谢来自Heroku支持团队的Lincoln的澄清。

更新了2013-09-30:当前清除virtualenv的方法似乎在runtime.txtas stated on GithubHeroku's devcenter reference中指定了不同的python运行时版本。

请注意,Heroku目前“只认可并支持Python 2.7.4和3.3.2的使用”,因此除非您的应用程序同时支持python2.7.4和3.3.2,否则您可能希望使用要切换到的运行时(当前可在http://envy-versions.s3.amazonaws.com/$PYTHON_VERSION.tar.bz2处获得,但在大多数情况下,在2.7.4和2.7.3之间切换应该不是问题)。

感谢@Jesse为您提供最新的answer以及让我意识到这个问题的评论。


在~2012年11月是最新的(此后我没有更新链接的buildpack,我的拉取请求被关闭,并且CLEAN_VIRTUALENV功能在某个时候被官方buildpack删除):

正如David所解释的,您不能pip卸载一个包,但可以清除并重新安装整个virtualenv。使用user-env-compile实验室功能和CLEAN_VIRTUALENV option清除virtualenv:

heroku labs:enable user-env-compile
heroku config:add CLEAN_VIRTUALENV=true

目前这不会工作,因为有一个错误。您需要使用构建包的my fork,直到此get fixed upstream(拉取请求已关闭):

heroku config:add BUILDPACK_URL=https://github.com/blaze33/heroku-buildpack-python.git

现在推你的新代码,你会注意到整个virtualenv被重新安装。

安德烈的回答自2012年3月23日起不再有效。new style virtualenv提交将虚拟环境从/app移动到/app/.heroku/venv,但是清除分支没有更新以赶上,因此您最终发现virtual env不在PYTHONHOME中。

要避免每次按下后重新安装所有内容,请禁用该选项:

heroku labs:disable user-env-compile
heroku config:remove CLEAN_VIRTUALENV BUILDPACK_URL

现在有一种更简单的方法来清除pip缓存。只需更改运行时环境,例如从“python-2.7.3”更改为“python-2.7.2”,反之亦然。

为此,请将名为runtime.txt的文件添加到存储库的根目录中,其中仅包含运行时字符串(如上图所示)。

为此,您需要打开Heroku labs用户env编译功能。见https://devcenter.heroku.com/articles/labs-user-env-compile

相关问题 更多 >

    热门问题