python - Django 1.9a1 __init__.py 在 eclipse/PyDev 中可见,即使它应该被删除 (Windows)

标签 python django eclipse windows pydev

我在这里有一个奇怪的行为:

我刚刚使用 pip 从 Django 1.9a1 升级到 Django 1.9.4。安装很顺利,Django运行也很顺利,但是在启动的时候,仍然显示版本号“1.9a1”。

只是为了确保我再次使用 pip 卸载了 Django 并确认我的 django 文件夹不再存在于 C:\Program Files (x86)\Python 3.5\lib\site-packages(既不是“django”也不是“Django-1.9 .4"文件夹)。

再次启动服务器后,我惊讶地看到错误信息

from django.core.management import execute_from_command_line
File "C:\Program Files (x86)\Python 3.5\lib\site-packages\django\__init__.py", line 1, in <module>
from django.utils.version import get_version
ImportError: No module named 'django.utils'

我预计错误类似于“找不到包 django”或类似的内容。
由于 eclipse 提供文件名作为链接,我点击了它,eclipse 打开了一个包含内容的文件
from django.utils.version import get_version
VERSION = (1, 9, 0, 'alpha', 1)
__version__ = get_version(VERSION)
[...]

我通过命令行和 Windows 资源管理器仔细检查了该文件是否不可用。

此文件位于何处,如何删除它?或者它是自动生成的(如果是,我该如何纠正这种机制)

或者我错过了一些完全明显的东西?

附加信息:
我重新安装了 Django 1.9.4 和 初始化 位于 C:\Program Files (x86)\Python 3.5\lib\site-packages\django__init__.py 的 .py 文件显示了正确的版本信息。但是,如果我运行一个 Django 项目,给出的版本信息是 1.9a1 。

即使我打开 cmd 提示符并输入
python -c "import django; print(django.get_version())"

答案是 1.9a1

2016-03-13 17:57 更新:
我再次卸载并使用了 alecxe 建议的显式 ==1.9.4。这解决了部分问题:
现在,如果我打开命令行,
python -c "import django; print(django.get_version())"

给我正确答案(1.9.4)。但是在 Eclipse/PyDev 中,我的项目不再启动。第一条错误信息是:
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x03F72108>
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python 3.5\lib\site-packages\django\apps\config.py", line 118, in create
    cls = getattr(mod, cls_name)
AttributeError: module 'django.contrib' has no attribute 'admin'

当然,admin模块存在于文件系统上。

只是为了检查,我在控制台中使用了一个新项目
django-admin startproject mysite

新项目创建成功。

当我在 Eclipse 中使用 PyDev 来启动一个新项目时(使用“new”/“PyDev Django Project”),这个过程失败了!项目目录和manage.py都创建好了,但是项目目录是空的(没有 init .py, settings.py, urls.py, wsgi.py)。

Eclipse/PyDev 似乎没有使用正确的 django 安装,即使给出的所有文件名都是正确的。是否可能涉及任何缓存?是的,我在重新安装后重新启动了 Eclipse。

补充资料 2016-03-14 17:44:
我刚刚重新启动了我的计算机,令人惊讶的是,我的 eclips 现在能够再次运行我的项目 - 上面描述的错误消失了,但显示的 django 版本号又是 1.9a1!
现在我启动了命令提示符和 python -c "import django; print(django.get_version())"又给了我1.9a1!我接下来做的是以管理员身份再次启动命令提示符 - tataa - 我得到了 1.9.4。

所以问题似乎与管理员权限有关,这可能是由于在 C:\Program Files (x86)\Python 3.5 中安装了 python 所致。 .对于上述所有 pip 安装/卸载,我使用了具有管理员权限的控制台窗口。是否有一些窗口机制可以解释这种行为?

解决方案 2016-03-14 18:17:
我现在在整个 C: 驱动器中搜索包含“django”的文件夹,并在
C:\Users\[my_username]\AppData\Local\VirtualStore\Program Files (x86)\Python 3.5\Lib\site-packages\django
并且 - 惊喜 - 它包含 初始化 .py 文件的版本号错误。所以看起来我安装了没有管理员权限的 1.9a1 并且 eclipse 总是使用这个版本,因为它也是在没有管理员权限的情况下启动的。在对 Windows VirtualStore 进行了一些研究后,我决定手动删除整个 C:\Users\[my_username]\AppData\Local\VirtualStore\Program Files (x86)\Python 3.5文件夹。

紧接着,我的 cmd 窗口向我展示了 1.9.4 版本,与管理员或非管理员模式无关。
而且 - 最重要的是 - 当我在 eclipse 中运行我的 django 项目时,它也显示了正确的版本号。
可以肯定的是,我使用 PyDev 向导创建了一个新的 django 项目,并且所有项目文件都已正确创建。

所以总而言之,问题是由于之前安装了没有管理员权限的 django,然后是具有管理员权限的 django 安装。负责的机制是 Windows VirtualStore,而不是 Eclipse 或 PyDev。

我将保留对我的奥德赛的整个描述,也许它可以帮助某人找到主题。我将在下面给出一个简短的总结答案。

最佳答案

上面描述了长篇故事,简短的回答是:

我在 C:\Users\[my_username]\AppData\Local\VirtualStore\Program Files (x86)\Python 3.5\Lib\site-packages\django 中额外安装了 django文件夹。这是由于安装了没有管理员权限的 1.9a1 版本。

由于 eclipse 也在没有管理员权限的情况下访问 django,因此它使用了过时的版本,而不是最近使用带有管理员权限的 pip 安装的版本。

我删除了 C:\Users\[my_username]\AppData\Local\VirtualStore\Program Files (x86)\Python 3.5文件夹,并在重新启动 eclipse 后一切正常。

关于python - Django 1.9a1 __init__.py 在 eclipse/PyDev 中可见,即使它应该被删除 (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35923393/

相关文章:

python - 一种更快的分离图像绿色 channel 的方法

python - 使用 Django/HTML/Python 不显示表单

Python/Django - 模板中的提取请求中未出现数据

python - 在 mac 上升级 pip 以安装 Django 库?

java - Eclipse 克隆项目

c++ - 在 C++ 中包含 C 代码奇怪的错误

python - 我目前在 Django 中提供我的静态文件。我如何使用 Apache2 来执行此操作?

python - 不支持 pandas dataframe 到 mysql db 错误数据库风格 mysql

python - 如何为表单中未填写的字段添加错误消息?

java - 打开跟踪文件时出错。没有那个文件或目录 [2]