pip安装的模块无法导入

Posted

技术标签:

【中文标题】pip安装的模块无法导入【英文标题】:Pip-installed module cannot be imported 【发布时间】:2021-11-01 05:55:51 【问题描述】:

我今天上传了我的第一个 PyPi 包。 我花了一段时间才弄清楚一切,但我做到了,现在我正在尝试将其导入到我的另一个项目中。

不幸的是,我收到了 ModuleNotFoundError。 我在 Windows 10 上,运行 python 3.9.6。 我已经尝试了我在互联网上看到的所有内容,删除了 venv 并重新创建了它,将包重新上传到 PyPi,使用python -m pip install sqlcontroller 甚至使用./venv/Scripts/python.exe -m pip install sqlcontroller 安装它。 我会尽量在下面提供我能提供的所有信息。

PyPi 包: https://pypi.org/project/sqlcontroller/

在 Github 上: https://github.com/RedKnight91/sqlcontroller

(venv) PS C:\Users\mikec\Documents\Python\binance-trading-bot-evaluator> python -m pip install sqlcontroller --no-cache-dir --upgrade 
Requirement already satisfied: sqlcontroller in c:\users\mikec\documents\python\binance-trading-bot-evaluator\venv\lib\site-packages (0.0.2)

import sqlcontroller 结果:

Traceback (most recent call last):
  File "c:\Users\mikec\Documents\Python\binance-trading-bot-evaluator\src\main.py", line 2, in <module>
    from sqlcontroller import SqlController
ModuleNotFoundError: No module named 'sqlcontroller'

pip show 输出

(venv) PS C:\Users\mikec\Documents\Python\binance-trading-bot-evaluator> python -m pip show sqlcontroller --files
Name: sqlcontroller
Version: 0.0.2
Summary: Controller class to handle sqlite3 databases.
Home-page: https://github.com/RedKnight91/sqlcontroller
Author: Michael Cazzarolli
Author-email: mikecazzarolli@gmail.com
License: UNKNOWN
Location: c:\users\mikec\documents\python\binance-trading-bot-evaluator\venv\lib\site-packages
Requires:
Required-by:
Files:
  sqlcontroller-0.0.2.dist-info\INSTALLER
  sqlcontroller-0.0.2.dist-info\LICENSE
  sqlcontroller-0.0.2.dist-info\METADATA
  sqlcontroller-0.0.2.dist-info\RECORD
  sqlcontroller-0.0.2.dist-info\REQUESTED
  sqlcontroller-0.0.2.dist-info\WHEEL
  sqlcontroller-0.0.2.dist-info\top_level.txt
  src\__init__.py
  src\__pycache__\__init__.cpython-39.pyc
  src\__pycache__\sqlcontroller.cpython-39.pyc
  src\sqlcontroller.py
  tests\__init__.py
  tests\__pycache__\__init__.cpython-39.pyc
  tests\__pycache__\conftest.cpython-39.pyc
  tests\__pycache__\test_sqlcontroller.cpython-39.pyc
  tests\conftest.py
  tests\test_sqlcontroller.py

where python 没有给出 venv 的输出:

(venv) PS C:\Users\mikec\Documents\Python\binance-trading-bot-evaluator> where python
(venv) PS C:\Users\mikec\Documents\Python\binance-trading-bot-evaluator> 

但它确实来自外部:

C:\Users\mikec>where python
C:\Users\mikec\AppData\Local\Programs\Python\Python39\python.exe

pip freeze

(venv) PS C:\Users\mikec\Documents\Python\binance-trading-bot-evaluator> pip freeze
sqlcontroller==0.0.2

【问题讨论】:

请编辑问题以显示您的 setup.py / setup.cfg 和/或 pyproject.toml。它们不在 github 存储库中。 这个 youtube 视频是你的朋友:youtube.com/watch?v=4fzAMdLKC5k&list=WL&index=4 【参考方案1】:

你的文件结构有误

这是我的包裹的外观示例

(venv) PS D:\Python\thebot> pip show bdbf --files
Name: bdbf
Author: Bertik23
Author-email: bertikxxiii@gmail.com
License: UNKNOWN
Location: d:\python\thebot\venv\lib\site-packages
Requires: discord.py
Required-by:
Files:
  bdbf-1.1.2.dist-info\INSTALLER
  bdbf-1.1.2.dist-info\LICENSE
  bdbf-1.1.2.dist-info\METADATA
  bdbf-1.1.2.dist-info\top_level.txt
  bdbf\__init__.py
  bdbf\__pycache__\__init__.cpython-39.pyc
  bdbf\__pycache__\bdbf.cpython-39.pyc
  bdbf\__pycache__\exceptions.cpython-39.pyc
  bdbf\__pycache__\functions.cpython-39.pyc
  bdbf\__pycache__\main.cpython-39.pyc
  bdbf\bdbf.py
  bdbf\exceptions.py
  bdbf\functions.py
  bdbf\main.py

如你所见,所有的 .py 文件都在 bdbf 文件夹中,但你的文件在 src 中,这不是你必须导入的名称,所以如果你这样做import src,你可能会导入你的包

【讨论】:

谢谢!像魅力一样工作,我更正了包名【参考方案2】:

你的包被称为“src”,所以安装的模块应该是当前可以导入的

from src import sqlcontroller

import src.sqlcontroller as sqlcontroller

但是,这个包装很差。您应该将***包命名为sqlcontroller,而不是src,并且您根本不应该打包tests 子目录。

【讨论】:

谢谢!我修复了包名(更改为 sqlcontroller),我怎样才能只打包它?这是我的 setup.cfg [options] packages = find: python_requires = &gt;=3.6 我尝试使用 'package_dir' 但没有成功 @RedKnight91 如果要使用 src 布局,则需要指定“位置”。这里展示了如何做到这一点:setuptools.readthedocs.io/en/latest/userguide/… 我尝试用 'sqlcontroller' 替换两个 'src' 但它不包含任何模块

以上是关于pip安装的模块无法导入的主要内容,如果未能解决你的问题,请参考以下文章

python初安装出现的一点问题(pycharm无法安装第三方模块,pip无法升级等)

python初安装出现的一点问题(pycharm无法安装第三方模块,pip无法升级等)

在 OSX 上使用 pip 安装模块,但在导入时找不到

我已经用pip安装了statsmodels 但是pycharm中找不到它,pycharm也无法安装

python+vlc 实现视频播放 ,需要安装这个vlc这个模块,使用pip install vlc安装,出现无法找到模块错误解决方法

如何从virtualenv导入使用pip安装的模块