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

时间:2016-03-10 17:33:57

标签: 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&# 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的完整描述,也许它可以帮助某人找到主题。我将在下面给出简短的总结答案。

2 个答案:

答案 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目录中。