我用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”,那么一切都能正常工作,但当我尝试按其名称导入整个包时,它仍然不能正常工作。我怎样才能解决这个问题
分布的名称(
setup
的name
参数)决定了在Python生态系统中如何识别distribution(或项目);这包括Python Package Index,其中分发将位于URLhttps://pypi.org/project/<name>/
这与分布包含的实际package(s)不同(
setup
的packages
参数)。这些软件包在安装发行版时可用(例如,通过pip
)例如,如果
setup.py
文件包含以下规范然后,这将创建一个名为
foo
的发行版,该发行版将安装一个名为bar
的包;i、 e.在执行pip install foo
之后,可以通过import bar
访问该发行版(包)的内容。通常,发行版和顶级软件包的名称应该一致,以避免与可能安装到同一虚拟环境中的其他发行版发生冲突(有关详细信息,请参见this answer)对于OP的特定示例,这意味着
setup.py
文件应包含以下规范:为了使安装工作,所有相关的Python模块都需要放在本地文件夹
ethbotutils
中,该文件夹位于setup.py
文件旁边相关问题 更多 >
编程相关推荐