如何解决ModuleNotFoundError 当使用 Setuptools 和 Wheels 运行从 PyPi 安装的自己的项目时
当我从 PyPi 安装我自己的 Python 应用程序之一时,它无法运行引用
文件“/home/me/.local/lib/python3.9/site-packages/refrapt/refrapy.py”,第 20 行,在 从类导入( ModuleNotFoundError: 没有名为“类”的模块。
我在本地有以下目录布局:
/refrapt
setup.py
/refrapt
classes.py
helpers.py
refrapt.conf
refrapt.py
settings.py
__init__.py
为了构建项目,我使用 setuptools
,运行以下命令:
python setup.py sdist bdist_wheel
这很愉快地构建和运行,我可以上传生成的 /dist
。
然后我使用 pip3 install refrapt
安装该项目。当我使用 refrapt
运行它时,出现上面的错误 ModuleNotFoundError
。
当我在本地运行开发代码时,它运行良好,但通过 pip 安装时却失败了。我认为这是我的 setup.py 的问题,但这是我的第一次,我真的不知道什么是正确的。我尝试按照某些 Python 文档的建议添加 init.py(它是空的),但无济于事。 setup.py的内容如下:
import pathlib
from setuptools import setup,find_packages
HERE = pathlib.Path(__file__).parent
README = (HERE / "README.md").read_text()
setup(
name='Refrapt',version='0.1.5',description='A tool to mirror Debian repositories for use as a local mirror.',python_requires='>=3.9',long_description=README,long_description_content_type="text/markdown",packages=find_packages(),install_requires=[
'Click >= 7.1.2','Colorama >= 0.4.4','tqdm >= 4.60.0','wget >= 3.2','filelock >= 3.0.12'
],classifiers=[
"Development Status :: 4 - Beta","Operating System :: Microsoft :: Windows :: Windows 10","Operating System :: POSIX :: Linux","Programming Language :: Python :: Implementation","Topic :: System :: Archiving :: Mirroring"
],keywords=['Mirror','Debian','Repository'],entry_points='''
[console_scripts]
refrapt=refrapt:refrapt
''',)
如果有人可以提供帮助,我将不胜感激。我对此一无所知,到目前为止还没有找到答案。
解决方法
from classes import …
在 Python 2 中这是相对导入——语句从导入模块的当前目录导入 classes
。
但是在 Python 3 中它被更改为绝对导入。导入失败,因为没有全局模块或名为 classes
的包。您需要将导入转换为绝对或相对。要么
from refrapt.classes import …
或
from .classes import …
,
我可能已经找到了问题的答案,但这不是我想要的答案。
我创建了一个虚拟环境,并安装了一个我以前通过 pip
使用过的应用程序。当我去运行应用程序时,我得到了 ModuleNotFoundError: No module named 'app'
。
我尝试使用 .py
通过 python .\.venv\Lib\site-packages\app\cli.py
文件手动运行它,这导致了同样的错误。
似乎与 Windows VS Code 中的环境设置有关,但与在 Linux 机器上的操作不同。
我想我只需要在本地开发时从 refrapt.
语句中删除“import
”前缀,然后在推送到 GitHub 时重新添加它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。