ModuleNotFoundError:尝试使用Scrapy运行unittest时

让我开始说,我在SE上看了几个答案,但没有一个解决了我的问题。

我有一个具有常规结构的应用程序

new_project/
    new_project/
        spiders/
            __init__.py
            my_spyder.py
        tests/
            __init__.py
            test_my_spyder.py
    __init__.py
    items.py
    middlewares.py
    ...
scrapy.cfg

在我的 test_my_spyder.py 中,我需要来自my_spyder.pyitems.py的类,所以我的代码是这样的:

import unittest

from scrapy.http import Request,HtmlResponse

from new_project.spiders import myownSpider
from new_project.items import MyItem

class TestMySpyderSpider(unittest.TestCase):

    def test_something(self):
        ...

如果我使用python -m unittest test_my_spyder目录中的new_project/,则会得到

  

ModuleNotFoundError:没有名为“ test_my_spyder”的模块

但是,如果我从tests/目录内部运行相同的命令,则返回值为:

  

从new_project.spiders导入myownSpider

     

ModuleNotFoundError:没有名为“ new_project”的模块

命令scrapy crawl spider-name完美运行。

-

现在,我尝试了所有事情:

1::在内部 test_my_spyder.py中进行了尝试,没有区别。

import sys,os
sys.path.insert(0,os.path.dirname(__file__))

2 :有或没有,没有区别:

if __name__ == '__main__':

    unittest.main()

3:所有这些变体:

from new_project.new_project.spiders import myownSpider
from spiders import myownSpider
from spiders.my_spyder import myownSpider #ModuleNotFoundError: No module named 'spiders'
from .spiders.my_spyder import myownSpider #ImportError: attempted relative import with no known parent package
from ..spiders.my_spyder import myownSpider #ImportError: attempted relative import with no known parent package

此外,我发现了很多地方,人们经常提到“将文件夹的路径添加到环境变量(PYTHONPATH)”。

我不确定这意味着什么……在下载并运行此应用后,我不确定我也应该这样做。

leilei19870815 回答:ModuleNotFoundError:尝试使用Scrapy运行unittest时

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3153035.html

大家都在问