7

我一直在努力重命名 Python 项目的项目文件夹。它被称为 Foo,我希望它重命名为 Bar。

Foo/
   /src
        __init__.py
        x.py
   /test
        __init__.py
        x_test.py
   __init__.py

变成了

Bar/
   /src
        __init__.py
        x.py
   /test
        __init__.py
        x_test.py
    __init__.py

当项目文件夹命名为 Foo 时,我的所有测试都通过了,但是在将其重命名为 Bar 之后,我的测试不再起作用。所有的进口都会提高ImportError: no module src.x.

可以在使用 python 控制台时导入模块:

$ python
>>> import src.x

然后,当我将 Bar 重命名为 Foo 并运行测试时,我会收到此错误:

import file mismatch:
imported module 'test.x' has this __file__ attribute:
  /home/orangetux/projects/Foo/test/x_test.py
which is not the same as the test file we want to collect:
  /home/orangetux/projects/Bar/test/x_test.py
HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules

我可以通过删除所有__pycache__文件夹来解决这个问题。但现在我又回到了起点。一个名为 Foo 的文件夹,其中包含工作测试。如何将项目文件夹重命名为 Bar 并继续工作测试?

4

2 回答 2

6

删除 python 缓存 ( __pycache__) 和所有“编译”文件(即:*.pyc、*.pyo)。

确保您的__init.py__文件没有引用任何文件夹或路径。

于 2014-02-17T00:49:59.157 回答
1

这是由于__init__.py根目录中存在不必要的文件造成的。


如果您只是删除它,您应该能够正确运行测试,即使您重命名项目文件夹也是如此。

Bar/
   /src
        __init__.py
        x.py
   /test
        __init__.py
        x_test.py
    __init__.py  -------------> REMOVE THIS FILE
于 2021-03-01T09:58:07.873 回答