【问题标题】:windows + virtualenv - django runserver searches global pythonpathwindows + virtualenv - django runserver 搜索全局 pythonpath
【发布时间】:2012-08-04 00:50:46
【问题描述】:

更新:注意这是在 WINDOWS 机器上

堆栈上有许多关于 virtualenv 和安装的 pythonpath 差异的帖子。在大多数情况下,这些用户只是忘记在进行 pip 安装之前激活 env。

这不是我的问题

相反,我的问题在于 django 在运行 manage.py runserver 时。我正在尝试迁移在创建 virtualenv 之前启动的 django 项目。作为其中的一部分,我尝试在激活的 virtualenv 中创建一个新的 django 项目,并简单地将我的旧文件迁移过来。

(VENV) python django-admin.py startproject XYZ

*注意:我已经激活了virutalenv并使用“python”运行命令,它指的是virutalenv中的python安装

然后我迁移我的旧文件并运行:

python manage.py runserver

此时 DLL 加载失败。

Error: DLL load failed: The specified module could not be found.

运行一个正常的 manage.py runserver 是可行的,但由于这是指全局 python 安装,这不是我想要的。

【问题讨论】:

  • 你能用完整的回溯更新问题吗?
  • 就是这样。在我运行 manage.py runserver 后,它立即显示错误:DLL 加载失败......这是 Windows 机器上的全新 python 安装,但我应该注意全局 manage.py runserver 工作正常跨度>
  • 您使用的是什么数据库驱动程序?是否安装在虚拟环境中,Python是什么版本的?
  • @BurhanKhalid postgresql - 我已经在 virtualenv 中安装了 psycopg2,甚至尝试按照 heroku devcenter.heroku.com/articles/psycopg2-windows 的建议通过 easy_install 安装
  • @BurhanKhalid 我认为它是 ~\Python27\\DLLs 中 virtualenv python 无法加载的东西。现在想弄清楚。

标签: django virtualenv pythonpath


【解决方案1】:

Windows 上的 Python 二进制安装程序与虚拟环境不兼容,只能安装到默认系统 Python(如注册表中所列)。

因此,数据库驱动程序和 Python 映像库等其他软件包与虚拟环境不兼容。

我知道三个选项:

  1. 设置编译器环境并手动构建您的模块(不推荐)。
  2. 使用系统 Python(更简单,并且可以与 Python 的预构建二进制 Windows 包一起使用);并手动管理您的需求。
  3. 手动将所需文件复制到您的虚拟环境中。

我推荐 #2 作为三个中最简单的一个。

您可以尝试使用 setuptools(easy_installpip),但除非您设置了开发环境,否则这些软件包将无法编译和安装成功(不会构建 DLL);导致您遇到的错误。

对于heroku;您可以手动管理您的需求文件并添加 psycopg2 以确保 heroku 正确部署您的应用程序。

【讨论】:

  • 如果我使用系统python,是否可以只引用venv站点包?如果是这样,怎么做?我试过了,系统python仍然是指系统包。我知道这一点是因为我故意在系统上卸载了一个必要的包以进行测试。
猜你喜欢
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多