为了账号安全,请及时绑定邮箱和手机立即绑定

PyPI - 包不包含文件

PyPI - 包不包含文件

繁花如伊 2022-01-11 20:28:43
我已按照本教程将包上传到 PyPI。我的包现在已上传到索引的测试实例:https : //test.pypi.org/project/ilya-ezplots/#files。但是,当我使用 pip 安装它时,我仍然无法导入它。>>> import ilya_ezplotsTraceback (most recent call last):  File "<stdin>", line 1, in <module>ModuleNotFoundError: No module named 'ilya_ezplots'我检查了我的 python 解释器的站点包,发现只有ilya_ezplots-0.0.2.dist-info目录。对于其他包,将有两个目录,例如h5py-2.9.0.dist-info和h5py。我的 setup.py:import setuptoolssetuptools.setup(    name="ilya_ezplots",    version="0.0.2",    packages=['plots'],    classifiers=[        "Programming Language :: Python :: 3",        "License :: OSI Approved :: MIT License",        "Operating System :: OS Independent",    ],)上传脚本:#!/usr/bin/env bashrm -r distpython setup.py sdist bdist_wheelpython -m twine upload -r testpypi dist/* -u ikamensh文件结构:././plots/__init__.py./setup.py./upload.sh
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

让我指出我之前的答案:https : //stackoverflow.com/a/54599368/7976758

ilya_ezplots是您的发行版的名称,但它不是可导入的名称。安装后可导入的名称为plots. 所以:

import plots


查看完整回答
反对 回复 2022-01-11
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

您应该导入:import plots

或者您应该将目录结构更改为:

./ilya_ezplots/__init__.py

然后import ilya_ezplots就可以解决问题了。

导入的名称应与父目录匹配。

参考这篇文章以保持正确的结构和良好的实践。

好的做法是维护一些命名空间或与您的包名称相同的目录名称,这样用户就不会感到困惑。

如果您的项目名称是,xyz那么您应该将目录名称保持为xyz. 因此,用户可以import xyz导入您的包,而不会与其他包混淆。例如。如果您将其yyy用作目录名称(并且您的软件包名称是xyz),那么用户可能会感到困惑并yyy改为安装软件包。

一个真实的例子:

包 beautifulsoup 需要import bs4导入它,因此他们维护bs4包(虚拟包),因此没有人可以创建具有该名称的包,bs4因为这可能会带来安全风险。


查看完整回答
反对 回复 2022-01-11
  • 2 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信