如何找到virtualenv安装

时间:2016-02-10 21:39:25

标签: python django

为现有Django应用程序部署到实时服务器。这是一个非常古老的网站,3年多来一直没有更新。

我被聘用合同以使其更新,其中包括将Django版本升级为最新版本。这打破了网站上许多必须修复的东西。

我做了一个测试部署,它很顺利。现在是部署生活的时候了,我遇到了一些问题......

我要做的第一件事是在服务器上记录当前的Django版本,包括我们可以回滚的任何问题。我尝试登录Python命令提示符并导入Django以查找版本号,它说Django没有找到。

我正在进一步寻找并在pip requirements.txt文件中找到该版本。

然后我决定更新服务器上的实际django版本。更新顺利进行。然后我检查了实时网站,一切都没有改变(旧文件仍然存在)。大部分网站都应该被打破。它没有认识到Django的任何变化。

我假设这可能是最后一个承包商使用virtualenv的原因?这就是为什么它不能识别Django,或者Django更新没有对现场网站做任何事情?

这是我能解释这个问题的唯一原因,因为有一个pip requirements.txt文件,他可能用pip安装了Django,这意味着Python应该识别Django的路径。

然后,我将尝试使用命令“lsvirtualenv”找到virtualenv的源路径。但是当我这样做时,即使这样也会给我一个“命令未找到”错误。

我唯一的猜测是,这是一个没有这个命令的virtualenv的旧版本?如果情况并非如此,我不确定发生了什么。

关于如何使用我可以访问的工具找到更新此服务器上的软件包版本所需的信息的任何建议?

2 个答案:

答案 0 :(得分:2)

创建自己的virtualenv

如果全部失败,只需从virtualenv重新创建requirements.txt并从那里开始

了解旧应用的推出方式

如果你坚持找到旧的,IMO最直接的方法是找到生产Django应用程序的方式。查找启动它的bash脚本,一些supervisor条目等

如果您发现它是如何开始的,那么您可以查明它所启动的环境(例如哪个virtualenv)

通过搜索常用文件找到virtualenv

除此之外,您可以使用findlocate命令搜索我们知道存在于lib/pythonX.Y/site-packagesbin/activatebin/python等虚拟文件中的文件等

答案 1 :(得分:0)

为什么不开始检查进程实际正在运行,以及使用ps auxf或类似的东西使用什么命令行。然后你知道它的nginx + uwsgi或django-devserver是什么,甚至可能看到virtualenv路径,如果它是非常手动启动的话。然后,查看您找到的服务器的配置文件。

或者,例如,使用netstat -taupen环顾四周,哪些进程正在侦听哪些端口。更有意义的是,如果有像nginx这样的反向代理或任何正在运行的代理,并且你知道它代理了它。

requirements.txt我完全忽略了。一旦激活并运行pip freeze,您将从virtualenv获得相同但正确的信息。该文件充其量是多余的,在最坏的情况下会产生误导。

不过,如果这个老承包商编译并安装了一个自定义Python,他甚至可能都没有使用virtualenv,同时仍然避免使用系统库和PYTHONPATH。不太可能,但可能。