无法导入 pip 安装的模块
Pip-installed module cannot be imported
我今天上传了我的第一个 PyPi 包。
我花了一些时间才弄清楚所有事情,但我做到了,现在我正在尝试将其导入我的另一个项目。
不幸的是,我收到了 ModuleNotFoundError。
我在 Windows 10,运行 python 3.9.6。
我已经尝试了我在 Internet 上看到的所有内容,删除了 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
您的包名为“src”,因此安装的模块目前应该可以导入
from src import sqlcontroller
或
import src.sqlcontroller as sqlcontroller
但是,这个包装很差。您应该将顶级包命名为 sqlcontroller
,而不是 src
,并且根本不应该打包 tests
子目录。
你的文件结构有误
这是我的包裹的示例
(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
,您可能会导入你的包
我今天上传了我的第一个 PyPi 包。 我花了一些时间才弄清楚所有事情,但我做到了,现在我正在尝试将其导入我的另一个项目。
不幸的是,我收到了 ModuleNotFoundError。
我在 Windows 10,运行 python 3.9.6。
我已经尝试了我在 Internet 上看到的所有内容,删除了 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
您的包名为“src”,因此安装的模块目前应该可以导入
from src import sqlcontroller
或
import src.sqlcontroller as sqlcontroller
但是,这个包装很差。您应该将顶级包命名为 sqlcontroller
,而不是 src
,并且根本不应该打包 tests
子目录。
你的文件结构有误
这是我的包裹的示例
(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
,您可能会导入你的包