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 = >=3.6
我尝试使用 'package_dir' 但没有成功
@RedKnight91 如果要使用 src 布局,则需要指定“位置”。这里展示了如何做到这一点:setuptools.readthedocs.io/en/latest/userguide/…
我尝试用 'sqlcontroller' 替换两个 'src' 但它不包含任何模块以上是关于pip安装的模块无法导入的主要内容,如果未能解决你的问题,请参考以下文章
python初安装出现的一点问题(pycharm无法安装第三方模块,pip无法升级等)
python初安装出现的一点问题(pycharm无法安装第三方模块,pip无法升级等)
我已经用pip安装了statsmodels 但是pycharm中找不到它,pycharm也无法安装
python+vlc 实现视频播放 ,需要安装这个vlc这个模块,使用pip install vlc安装,出现无法找到模块错误解决方法