PyPI - 包不包含文件

我已按照本教程将包上传到 PyPI。我的包现在已上传到索引的测试实例:https : //test.pypi.org/project/ilya-ezplots/#files。但是,当我使用 pip 安装它时,我仍然无法导入它。


>>> import ilya_ezplots

Traceback (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 setuptools


setuptools.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 bash


rm -r dist

python setup.py sdist bdist_wheel

python -m twine upload -r testpypi dist/* -u ikamensh

文件结构:


./

./plots/__init__.py

./setup.py

./upload.sh


繁花如伊
浏览 175回答 2
2回答

芜湖不芜

让我指出我之前的答案:https&nbsp;:&nbsp;//stackoverflow.com/a/54599368/7976758ilya_ezplots是您的发行版的名称,但它不是可导入的名称。安装后可导入的名称为plots.&nbsp;所以:import&nbsp;plots

海绵宝宝撒

您应该导入:import plots。或者您应该将目录结构更改为:./ilya_ezplots/__init__.py然后import ilya_ezplots就可以解决问题了。导入的名称应与父目录匹配。参考这篇文章以保持正确的结构和良好的实践。好的做法是维护一些命名空间或与您的包名称相同的目录名称,这样用户就不会感到困惑。如果您的项目名称是,xyz那么您应该将目录名称保持为xyz.&nbsp;因此,用户可以import xyz导入您的包,而不会与其他包混淆。例如。如果您将其yyy用作目录名称(并且您的软件包名称是xyz),那么用户可能会感到困惑并yyy改为安装软件包。一个真实的例子:包 beautifulsoup 需要import bs4导入它,因此他们维护bs4包(虚拟包),因此没有人可以创建具有该名称的包,bs4因为这可能会带来安全风险。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python