我已按照本教程将包上传到 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
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
您应该导入:import plots。
或者您应该将目录结构更改为:
./ilya_ezplots/__init__.py
然后import ilya_ezplots就可以解决问题了。
导入的名称应与父目录匹配。
参考这篇文章以保持正确的结构和良好的实践。
好的做法是维护一些命名空间或与您的包名称相同的目录名称,这样用户就不会感到困惑。
如果您的项目名称是,xyz那么您应该将目录名称保持为xyz. 因此,用户可以import xyz导入您的包,而不会与其他包混淆。例如。如果您将其yyy用作目录名称(并且您的软件包名称是xyz),那么用户可能会感到困惑并yyy改为安装软件包。
一个真实的例子:
包 beautifulsoup 需要import bs4导入它,因此他们维护bs4包(虚拟包),因此没有人可以创建具有该名称的包,bs4因为这可能会带来安全风险。
添加回答
举报
0/150
提交
取消
