Python3 为 PyPi 准备软件包,不包括子模块



注释:

  1. 我正在使用Python v3.6
  2. 我已经阅读了有关模块和包的文档
  3. 我已经阅读并完成了打包项目教程
  4. 我看过示例项目(与教程项目不同(

我有一个简单的包想做

myPackage/                      The project directory
myPackage/                  Top-level package
__init__.py               Initialize my package
myClass.py                a file with a single class in it
setup.py
README.md
...
dist/

myClass.py只是在哪里

class myClass:
__init__(self):
print('here')

我的myPackage/__init__.py文件就像演示一样

name = "myPackage"

我已经成功地在 pypi 上得到了它,pip 安装了它。

我可以import myPackage但与教程不同

example_pkg.name

工程

myPackage.name

不。

上面链接的示例项目并没有完全详细说明init.py 文件。

所以我的问题如下:

假设在模块和包的文档下有一个这样的包:

sound/                          Top-level package
__init__.py               Initialize the sound package
formats/                  Subpackage for file format conversions
__init__.py
wavread.py
wavwrite.py
aiffread.py
aiffwrite.py
auread.py
auwrite.py
...
effects/                  Subpackage for sound effects
__init__.py
echo.py
surround.py
reverse.py
...
filters/                  Subpackage for filters
__init__.py
equalizer.py
vocoder.py
karaoke.py
...

实际文件结构在哪里(按照打包项目教程进行操作(

sound/
sound/ (Top-level package)
__init__.py
...
dist/
build/
sound.egg/
README.md
...

sound/__init__.py(或myPackage/__init__.py(中有什么内容,以便我可以导入它并访问其中的函数、子模块和类?

很抱歉成为蟒蛇包装的菜鸟。

# contents of setup.py
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="progil",
version="0.0.4",
author="name",
author_email="name@web",
description="Progress In Line",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://pypi.org/project/progil/",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
)

理智 使用我的项目 johnnydep 检查发行版的顶级导入名称:

# pip install johnnydep
$ johnnydep progil --fields name summary versions_available import_names
name    summary           versions_available    import_names
------  ----------------  --------------------  --------------
progil  Progress In Line  0.0.2, 0.0.3, 0.0.4   progril

你要踢自己。 看起来您命名了该发行版:

progil

但是您在源代码中命名了包

progril

pip 安装progil和导入progril工作。 您在设置时没有注意到,因为您已经使用了find_packages()实际上,发行版名称没有理由需要与包名称匹配。

相关内容

  • 没有找到相关文章

最新更新