Python本地包创建/导入失败(严重)

科林

我有几个看似简单的用例,感觉好像缺少了一步。

基本上,我有这个项目结构:

|- session_storage_base.py
|- aws_session_storage.py
|- README.md
|- setup.py

这是setup.py:

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="session_data_access", 
    version="0.3",
    author="Colin",
    author_email="[email protected]",
    description="session storage data access.",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/...",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',
)    

我运行命令:

python3 setup.py sdist bdist_wheel

...成功创建了session_data_access-0.3.tar.gz。

然后,我运行:

python3 -m pip install /Users/.../dist/session_data_access-0.3.tar.gz

...以及当我跟进时:

python3 -m pip list

...我在列出的软件包中看到“会话数据访问0.0.3”。

当我跑步时:

which python3

...值是:“ / Library / Frameworks / Python.framework / Versions / 3.8 / bin / python3”。

我还在VS Code中设置了Python解释器,以确保它指向上述路径。

但是,当我这样做时:

import aws_session_storage

... VS Code带有弯曲的行,并显示错误:“无法导入aws_session_storage”。

如果我使用import语句将文件包中的文件剪切并粘贴到项目中,则工作正常。

我尝试本地打包的每一段代码都在发生这种情况。

我到底在哪里错?!?

耶里米尔

setuptools.find_packages()试图在您的存储库中找到一个软件包,这意味着:

一个Python模块,可以包含其他模块或递归地包含其他软件包。

(来源:https : //packaging.python.org/glossary/#term-Import-Package

因此,如果将python脚本捆绑到模块中,应该会很好:

|- session_data_access/
|   |- __init__.py
|   |- session_storage_base.py
|   |- aws_session_storage.py
|- README.md
|- setup.py

按照您的安装方式安装后,您应该可以执行以下操作:

from session_data_access import aws_session_storage

编辑:

正如我刚刚发现的,感谢您注释中链接,Python 3.3引入了本机命名空间包__init__.py如果您配置文件中使用setuptools.find_namespace_packages()而不是setuptools.find_packages(),则可以忽略该setup.py文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档