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

问题描述 投票:0回答:1

我创建了一个Python包,其中有:

  1. __init.py
  2. 设置.py

setup.py的内容:

setup(name="testxyz",version="0.2",description="test",long_description="test",author="test",Packages=['testxyz'],install_requires=[])

现在我跑步

python setup.py sdist bdist_wheel

这将创建轮子文件。我可以使用 pip install 安装wheel 文件。我还可以在 pip list 输出中看到它。之后,当我运行时: 导入 testxyz,我收到以下错误:

ModuleNotFoundError: No module named 'testxyz'

python python-wheel
1个回答
0
投票

这里可能存在一些问题,但是根据迄今为止的信息:

  • 你说你的文件是
    __init.py
    但它应该是
    __init__.py
  • testxyz
    需要是一个包含
    __init__.py
    的目录。

您的

setup.py
还可能存在其他问题。

使用依赖管理工具

看起来您刚刚开始一个项目。在这种情况下,我建议切换到

pyproject.toml
而不是
setuptools
旧版
setup.py
。这是配置 python 项目的新标准方法。

其次,而不是尝试手工制作初始项目结构。您可以使用 pdm

poetry
之类的工具,很多工作都会为您完成。

pip install pdm
pdm init

然后,您将获得自动生成的文件夹结构,以及开箱即用的依赖项管理。

pdm add numpy

使用您想要的依赖项更新

pyproject.toml

pdm install

这将为您创建一个虚拟环境(每个项目的沙盒 Python 环境)。如果您从事多个项目,那么值得为每个项目使用 venv,而不是尝试管理系统 python 安装的依赖关系。

要激活 venv,您只需“source”即可,而不是执行

activate
脚本。

source ./.venv/bin/activate

开发安装

您似乎正在尝试构建一个轮子,然后在开发过程中将其安装到往返。你很快就会厌倦这个。当您构建并安装 Wheel 软件包时,它将源目录的内容复制到“site-packages”目录。因此,如果您的代码没有达到您的预期,是因为它不起作用...还是因为您忘记重新安装而运行旧版本的代码。

您可以为此使用开发模式。可以使用

pdm install
开箱即用,但您也可以使用以下命令手动执行此操作:

pip install -d .

其中

.
是包含
setup.py
pyproject.toml
的目录的路径。注意:如果使用
pyproject.toml
,则这只适用于某些“后端”。不确定当前状态,但我认为
pdm
有效,
poetry
无效,但提供了等效的功能。

无论如何,希望这能帮助你前进。

© www.soinside.com 2019 - 2024. All rights reserved.