Django 1.9a1 __init__.py 在 eclipse/PyDev 中可见,即使它应该被删除 (Windows)
Django 1.9a1 __init__.py is visible in eclipse/PyDev even though it should be deleted (Windows)
我在这里有一个 st运行ge 行为:
我刚刚使用 pip 从 Django 1.9a1 升级到 Django 1.9.4。安装顺利,Django 运行ning 顺利,但在启动过程中,它仍然显示版本号“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'
我预计错误会是 "package django not found" 或类似的错误。
由于 eclipse 提供的文件名为 link,我单击它时 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\[=97 的 init.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。我使用具有管理员权限的控制台 window 进行上述所有 pip 安装/卸载。是否有一些 windows 机制可以解释这种行为?
解决方案 2016-03-14 18:17:
我现在在我的整个 C: 驱动器中搜索包含 "django" 的文件夹,我在
中找到了一个
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-window 显示了版本 1.9.4,独立于管理模式或非管理模式。
而且 - 最重要的是 - 当我 运行 我在 eclipse 中的 django 项目时,它也显示了正确的版本号。
可以肯定的是,我使用 PyDev 向导创建了一个新的 django 项目,并且所有项目文件都已正确创建。
所以总而言之,问题是由于先前安装了没有管理员权限的 django,然后又安装了具有管理员权限的 django。负责的机制是 Windows VirtualStore,而不是 Eclipse 或 PyDev。
我将保留对我的奥德赛的完整描述,也许它可以帮助别人找到主题。我将在下面给出一个简短的总结回答。
我记得在类似的案例中帮助过我的是完全卸载 Django 并重新安装它:
pip uninstall django
pip install django==1.9.4
如果通过pip
卸载django后遗留在C:\Program Files (x86)\Python 3.5\lib\site-packages
目录中,您可能还需要检查并手动删除django
目录和egg文件。
长话短说就是:
我的 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 后一切正常。
我在这里有一个 st运行ge 行为:
我刚刚使用 pip 从 Django 1.9a1 升级到 Django 1.9.4。安装顺利,Django 运行ning 顺利,但在启动过程中,它仍然显示版本号“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'
我预计错误会是 "package django not found" 或类似的错误。 由于 eclipse 提供的文件名为 link,我单击它时 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\[=97 的 init.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。我使用具有管理员权限的控制台 window 进行上述所有 pip 安装/卸载。是否有一些 windows 机制可以解释这种行为?
解决方案 2016-03-14 18:17: 我现在在我的整个 C: 驱动器中搜索包含 "django" 的文件夹,我在
中找到了一个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-window 显示了版本 1.9.4,独立于管理模式或非管理模式。 而且 - 最重要的是 - 当我 运行 我在 eclipse 中的 django 项目时,它也显示了正确的版本号。 可以肯定的是,我使用 PyDev 向导创建了一个新的 django 项目,并且所有项目文件都已正确创建。
所以总而言之,问题是由于先前安装了没有管理员权限的 django,然后又安装了具有管理员权限的 django。负责的机制是 Windows VirtualStore,而不是 Eclipse 或 PyDev。
我将保留对我的奥德赛的完整描述,也许它可以帮助别人找到主题。我将在下面给出一个简短的总结回答。
我记得在类似的案例中帮助过我的是完全卸载 Django 并重新安装它:
pip uninstall django
pip install django==1.9.4
如果通过pip
卸载django后遗留在C:\Program Files (x86)\Python 3.5\lib\site-packages
目录中,您可能还需要检查并手动删除django
目录和egg文件。
长话短说就是:
我的 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 后一切正常。