注意事项:
我想做一个简单的包裹
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
是
我的myPackage/__init__.py
文件就像演示一样
我已经成功地在pypi上安装了它。在
我可以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
)中有什么可以导入它并访问其中的函数、子模块和类?在
很抱歉,我在python包装方面是个笨蛋。在
# 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",
],
)
使用my projectjohnnydep检查分发的顶层导入名称是否正常:
你要踢自己。看起来您命名了分发:
^{pr2}$但是你在源代码中命名了这个包
pip安装
progil
和导入progril
工作。您在安装时没有注意到,因为您使用了find_packages()
,而且实际上,分发名不需要与包名匹配。在相关问题 更多 >
编程相关推荐