我在这里有一种奇怪的行为:
我刚刚使用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&# 34;也不是" 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'
我预计错误会像&#34;未找到包django&#34;或类似的。 由于eclipse提供了文件名作为链接,我点击了它,eclipse打开了一个包含内容的文件
from django.utils.version import get_version
VERSION = (1, 9, 0, 'alpha', 1)
__version__ = get_version(VERSION)
[...]
我仔细检查过该文件无法通过命令行和Windows资源管理器获得。
此文件位于何处,如何摆脱它?或者它是自动生成的(如果是,我该如何纠正这种机制)
或者我错过了一些完全明显的东西?
其他信息: 我重新安装了位于C:\ Program Files(x86)\ Python 3.5 \ lib \ site-packages \ django__init __的Django 1.9.4和 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来启动一个新项目时(使用&#34; new&#34; /&#34; PyDev Django Project&#34;),该过程失败了!项目目录以及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:驱动器中搜索包含&#34; django&#34;的文件夹,我在
中找到了一个 C:\Users\[my_username]\AppData\Local\VirtualStore\Program Files (x86)\Python 3.5\Lib\site-packages\django
和 - 惊喜 - 它包含带有错误版本号的 init .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。
我将保留我的Odyssee的完整描述,也许它可以帮助某人找到主题。我将在下面给出简短的总结答案。
答案 0 :(得分:4)
上面描述了长篇故事,简短的回答是:
我在C:\Users\[my_username]\AppData\Local\VirtualStore\Program Files (x86)\Python 3.5\Lib\site-packages\django
文件夹中另外安装了django。这是因为安装了没有管理员权限的1.9a1版本。
由于eclipse在没有管理员权限的情况下访问django,它使用的是过时的版本,而不是最近使用admin rigths安装了usp的版本。
我删除了C:\Users\[my_username]\AppData\Local\VirtualStore\Program Files (x86)\Python 3.5
文件夹,重启eclipse后一切正常。
答案 1 :(得分:1)
我记得在类似情况下帮助我完全卸载Django 并重新安装它:
providers:
preview_users:
memory:
users:
client:
password: 'mypass'
roles: ROLE_PREVIEWER
您可能还需要检查并手动删除pip uninstall django
pip install django==1.9.4
目录和egg文件,如果它通过django
卸载django后留在C:\Program Files (x86)\Python 3.5\lib\site-packages
目录中。