首页 > 解决方案 > 制作 setup.py 并运行“pip install -e”后出现 ModuleNotFoundError。

问题描述

我正在尝试使用路径“C:\Users\myName\dir1\2020\Indeed-Scraper\database\database.py”将类 SqlQuery、SqlPost 和 SqlPage文件“database.py”导入文件。我的第一次尝试是使用相对导入:我认为这会起作用,因为“数据库”文件夹比. 不是这样。那回来了。Query.py from ...database.database import SqlQueryQuery.pyValueError: attempted relative import beyond top-level package

我在 StackOverflow 上发布了有关此内容的信息,一位乐于助人的用户提出了此修复建议:“setup.py为您的项目制作一个。然后运行pip install -e”。

好吧,我试过了。我现在setup.py在项目的根目录中有一个文件夹,如下所示:

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="indeedscraper",
    version="0.1.1",
    author="myName",
    author_email="myName@provider.com",
    description="A tool used to scrape & display data from Indeed",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/myUsername/myProject",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',
)

pip install -e .在项目的根目录中运行。现在 PyCharm 将“”自动完成from in为“ from indeedscraper”,所以有些东西发生了变化。但from indeedscraper.database.database import SqlQuery仍然给我:

Traceback (most recent call last):
  File "C:/Users/myName/dir1/2020/Indeed-Scraper/scraper/classes/Query.py", line 17, in <module>
    from indeedscraper.database.database import SqlQuery
ModuleNotFoundError: No module named 'indeedscraper'

关于如何进行的任何建议?我有点卡在这里学习制作一个包并从该包导入,因为另一种方法是从我的“database.py”文件中复制大约 50 行代码,这很难看。

编辑:我__init__.py的顶级目录“database.py”和包含我要导入的文件的目录中确实有文件。像这样:

project_name/
    __init__.py
    database/
        __init__.py
        database.py
    scraper/
        __init__.py # I do have this file here, sorry, didn't realize it was important
        classes/
            __init__.py
            Query.py

Edit2:我意识到问题可能源于我使用 Anaconda 的事实。我在 Query.py 中正确导入,但 PyCharm 中输出的前 2 行显示为:“C:\Users\myname\Anaconda3\envs\august_2019_django_project\python.exe C:/Users/myname/dir1/2020/Indeed-刮板/刮板/类/Query.py”

会是这样吗?

标签: python

解决方案


推荐阅读