【发布时间】:2021-09-30 23:14:06
【问题描述】:
我使用 twine 在 PyPi 上上传了一个包,一切正常。 现在我正在尝试安装该软件包并将其导入到脚本中。
根据 pip 模块已经正确安装:
PS C:\Users\alber> pip install ethbotutils
Requirement already satisfied: ethbotutils in c:\users\alber\appdata\local\programs\python\python39\lib\site-packages (1.1)
但是当我尝试在脚本、IDE 或 Python IDLE 中导入它时,我得到:
>>> import ethbotutils
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
import ethbotutils
ModuleNotFoundError: No module named 'ethbotutils'
这是pyproject.toml文件(存放在项目根目录):
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
还有这个 setup.py 文件(存储在包目录中):
from setuptools import setup
setup(
name='ethbotutils',
version=1.0,
packages=["."],
install_requires=["requests~=2.25.1", "PyYAML~=5.4.1"],
python_requires=">=3.6"
)
编辑:
@a_guest 建议的内容似乎有效:如果我导入包中存在的脚本,例如“bot_utils”,一切正常,但当我尝试按其名称导入整个包时它仍然无法正常工作。我该如何解决?
【问题讨论】:
-
试试
python -m pip install ethlib。pip和python很可能不属于同一个安装。 -
试过了,同样的行为
-
你的项目叫什么名字?没有名为
ethlibon pypi 的项目。您还可以分享您的setup.py或pyproject.toml文件的内容吗? -
那是因为我删除了这个包。我真的厌倦了 python 如何与导入和模块 atm 一起工作,但总有一天我会再试一次
-
你真的应该分享你的
setup.py文件的内容。我的感觉是你有类似setup(name='ethlib', packages=find_packages(), ...)的东西,然后在你的本地磁盘上,包含包的实际文件夹的名称与ethlib不同。因此,如果您以setup(name='ethlib', packages=['foo'], ...)为例,那么ethlib是在 PyPI 上标识 project 的名称,但foo是它的实际 package包含(所以你需要import foo)。更多信息请参考this answer。