【发布时间】:2021-02-27 10:15:50
【问题描述】:
我是 Python 新手。这看起来是一个非常简单的问题,但我尽力解决了。
我正在尝试将我开发的 python 包发布到神器商店。但是,当我在目标机器上下载包时,会遇到关于未找到内部模块的错误。包装和安装看起来都不错。输出消息显示它确实包含子模块。
我的目录结构如下。
samplepackage/
hello.py
__init__.py
dir1/
__init__.py
dir1pkg.py
以下是文件的内容。初始化文件为空。
你好.py
import sys
from dir1.dir1pkg import dir1pkg
def main ():
dirpkg = dir1pkg('This is msg')
dirpkg.printmsg()
if __name__ == "__main__":
main()
dir1pkg.py
class dir1pkg:
def __init__(self,msg):
self.msg = msg
def printmsg(self):
print(self.msg)
setup.py
import setuptools
from setuptools import setup, find_packages, find_namespace_packages
setup(
name="samplepackage",
version="0.0.3",
author="myname",
author_email="myemail@email.com",
description="This is a sample package",
long_description="This is long description",
long_description_content_type="text/markdown",
packages=setuptools.find_packages(),
include_package_data=True,
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
entry_points={
"console_scripts":[
"samplepackage=samplepackage.hello:main"
]
}
,python_requires='>=3.7'
)
以下是我如何打包并发布到工件存储库。
python setup.py sdist bdist_wheel
twine upload --config-file ".pypirc" -r <artifact_feed> dist/*
以下是我在目标上的安装方式。
python -m pip install --upgrade samplepackage
python -m SamplePackage.hello.py
这给了我下面的错误
C:\Users\manan\Desktop>python -m samplepackage.hello.py 回溯(最近一次通话最后): _run_module_as_main 中的文件“C:\Users\manan\AppData\Local\Programs\Python\Python38\lib\runpy.py”,第 185 行 mod_name, mod_spec, 代码 = _get_module_details(mod_name, _Error) _get_module_details 中的文件“C:\Users\manan\AppData\Local\Programs\Python\Python38\lib\runpy.py”,第 111 行 __import__(pkg_name) 文件“C:\Users\manan\AppData\Local\Programs\Python\Python38\lib\site-packages\samplepackage\hello.py”,第 2 行,在 从 dir1.dir1pkg 导入 dir1pkg ModuleNotFoundError:没有名为“dir1”的模块但是,从我正在开发包的地方运行它就很好。我可以在下面执行,它能够毫无问题地找到内部模块。
C:\Users\mdmehta\Desktop\PythonPackage\samplepackage>python hello.py 这是味精我已经尝试在 setup.py 周围做了很多调整,但没有一个起作用。甚至安装包的输出看起来也不错。我确实看到 dir1 被包含在一个包中。
>>> 帮助('样品包') 包示例包的帮助: 姓名 样品包 包装内容 dir1(包) 你好 文件 c:\users\mdmehta\appdata\local\programs\python\python38\lib\site-packages\samplepackage\__init__.py【问题讨论】:
标签: python python-3.x python-module python-packaging