gpt4 book ai didi

django - 在以 windows 为主机的 vagrant ubuntu vm 上运行 pytest。导入文件不匹配

转载 作者:行者123 更新时间:2023-12-04 16:46:01 25 4
gpt4 key购买 nike

我想这是一个非常具体的情况,但我会提出这个问题,因为我没有找到相关的答案并且可能对其他人有用。

情况是这样的:

  • Windows 是主机操作系统。
  • 有一个 Ubuntu VirtualBox(用 vagrant 创建)。
  • 我的 django 项目文件夹在 windows 和 ubuntu 之间共享。
  • 我在ubuntu和on上都安装了pytest(通过pytest-django)
    我在 Windows 上的 virtualenv。
  • 如果我运行 pytest来自 windows virtualenv 的命令,测试运行
    还好
  • 但在 ubuntu vm 终端中,我不能只运行 pytest命令
    因为我收到错误:程序'pytest'目前不是
    安装。
  • 我可以用 python -m pytest 运行它.但在这种情况下,我得到 import file mismatch错误:

  • =========================错误=======================
    _____________ ERROR collecting my_django_app/tests.py ____________

    import file mismatch:
    imported module 'my_django_app.tests' has this **__file__** attribute:
    C:\virtualEnvs\my_env\project_src\my_django_app\tests.py
    which is not the same as the test file we want to collect:
    /vagrant/projects/project_src/my_django_app/tests.py
    HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules

    信息很清楚,但我不知道如何克服这个问题。

    我用python 2.7.9 没有 pycache 文件夹(也不是 ant .pyc 编译文件)。

    最佳答案

    我只需要删除缓存的编译 python 文件。这些文件在 内__pycache__ django 项目文件夹中的文件夹。每个 django 应用程序都有一个 pycache 文件夹也是。

    如果您在 windows 主机中运行 pytest,缓存的编译文件包含 windows 特定路径并尝试从那里导入模块。所以必须删除缓存的文件。然后,您可以使用以下命令在 ubuntu VM 中运行 pytest:python -m pytest
    您可以通过使用 -B 选项运行 python 解释器来避免创建编译文件:python -B pytest

    关于django - 在以 windows 为主机的 vagrant ubuntu vm 上运行 pytest。导入文件不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43124557/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com