创建一个新的 virtualenv 项目和为现有项目创建一个 virtualenv 导致错误

Creating a new virtualenv project and creating a virtualenv for existing project causes error

我试图寻找解决方案或线程来处理这个问题,但我很难一开始就表达它,因为我对 django、virtualenv、pip 等还很陌生

我正在使用 windows 10,我在 powershell 中执行以下所有操作。

当我开始我的第一个项目时,名为 fadderjobb,我没有使用 virtualenv。我使用 pip install 安装了几个包。现在,当我开始我的第二个项目 wingqvist 时,我安装了 virtualenv,在文件夹 envs/wingqvist 中创建了一个虚拟环境,安装了 Django 并在另一个新文件夹 webdev/wingqvist 中创建了一个新的 Django 项目。看起来像这样。

webdev
|-- fadderjobb
|   `-- projectfiles for fadderjobb
|-- wingqvist
|   `-- projectfiles for wingqvist
`-- envs
    `-- wingqvist
        `-- virualenv files for wingqvist

当我在我的 virtualenv (wingqvist) 中尝试 运行 python manage.py 迁移到 webdev/wingqvist/ 时,我收到以下错误:

(wingqvist) PS C:\Users\Viktor Wingqvist\documents\webdev\wingqvist> python 

manage.py migrate
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\Viktor Wingqvist\documents\webdev\envs\wingqvist\lib\site-packages\django\core\management\__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "C:\Users\Viktor Wingqvist\documents\webdev\envs\wingqvist\lib\site-packages\django\core\management\__init__.py", line 347, in execute
    django.setup()
  File "C:\Users\Viktor Wingqvist\documents\webdev\envs\wingqvist\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\Viktor Wingqvist\documents\webdev\envs\wingqvist\lib\site-packages\django\apps\registry.py", line 89, in populate
    app_config = AppConfig.create(entry)
  File "C:\Users\Viktor Wingqvist\documents\webdev\envs\wingqvist\lib\site-packages\django\apps\config.py", line 90, in create
    module = import_module(entry)
  File "C:\Users\Viktor Wingqvist\documents\webdev\envs\wingqvist\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'mathfilters'

我将 'mathfilters' 识别为我在 fadderjobb 中使用的数据包,所以我认为它以某种方式(!?)自动作为我的(wingqvist)virtualenv 中的依赖项结束。

我试图通过为 fadderjobb 创建另一个 virtualenv 来解决它,将所有安装的 pip 包保存在 requirements.txt,运行 pip uninstall -r requirements.txt,激活 virualenv (fadderjobb)然后 pip 安装 requirements.txt.

中的所有内容

我现在的 folder/file 结构类似于:

webdev
|-- fadderjobb
|   `-- projectfiles for fadderjobb
|-- wingqvist
|   `-- projectfiles for wingqvist
`-- envs
    |-- wingqvist
    |   `-- virualenv files for wingqvist
    `-- fadderjobb
        `-- virualenv files for fadderjobb

为了确保我在 (fadderjobb) 中测试了我的旧项目并且它看起来很棒,pip freeze returns 我想要什么等等

我停用了 (fadderjobb),看到 pip freeze 不再显示依赖项列表,只显示 virtualenv。然后我删除了 webdev/envs/wingqvist 并像以前一样创建了一个新的(如果这很重要,我什至重新启动了我的电脑)。我激活了新的 (wingqvist) pip 安装 Django 并尝试 运行 python manage.py 迁移,并得到与 ModuleNotFoundError 相同的结果。

真不知道该怎么办。我想一个解决方案是在 (wingqvist) 中 pip 安装所有依赖项,但这种做法违反了使用 virtualenvs 的原则。

(我在篡改 virtualenvs 之前将我的 python 版本从 3.6.3(我认为)更新到 3.6.5,但我认为这不相关。)

有什么想法吗?

Viktor,你在virtualenv路径中,请更改你项目目录中的路径

(wingqvist) PS C:\Users\Viktor Wingqvist\documents\webdev\wingqvist python 

manage.py迁移

改为

(wingqvist) PS C:\Users\Viktor Wingqvist\documents\webdev\wingqvist> python 

manage.py迁移

我通过完全重新安装与 python 有关的所有内容解决了这个问题,并删除了这两个项目。我还删除了每个环境变量并从头开始重新启动。然后我重新制作了两个 virtualenvs,创建了一个名为 wingqvist 的新 django 项目,git 拉取了 fadderjobb 项目。这花了一些时间,但 (wingqvist) 和 (fadderjobb) 中的所有内容都按所需设置正常工作。

编辑:

现在我遇到了同样的问题,但仅限于我在项目根目录下通过在资源管理器的地址字段中写入 "powershell" 打开的 powershell 实例。当我通过单击 "windows key + x" 并单击列表中的 windows powershell(管理员)以管理员身份打开 powershell 时,一切正常。所以重新安装可能是徒劳的。