我在这里有一个奇怪的行为:
我刚刚使用 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/