当我从PyPi安装自己的Python应用程序时,它无法引用运行
文件"home/me/.local/lib/python3.9/site packages/refrapt/refrapy.py";,第20行,in从类导入(ModuleNotFoundError:没有名为"classes"的模块。
我在本地有以下目录布局:
/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
。
但在Python3中,它被改为绝对导入。导入失败,因为没有名为classes
的全局模块或包。您需要将导入转换为绝对值或相对值。任一
from refrapt.classes import …
或
from .classes import …
我可能已经找到了问题的答案,但这不是我想要的答案。
我构建了一个虚拟环境,并安装了一个以前通过pip
使用过的应用程序。当我去运行这个应用程序时,我得到了ModuleNotFoundError: No module named 'app'
。
我尝试使用python ..venvLibsite-packagesappcli.py
通过.py
文件手动运行它,这导致了同样的错误。
似乎是Windows VS Code中的环境设置与Linux机器上的操作不同。
我想我只需要删除";CCD_ 13";本地开发时从import
语句中提取前缀,然后在推送到GitHub时将其添加回。