Python本地包创建/导入失败(非常糟糕)
我有几个看似简单的用例,我觉得我错过了一步 基本上,我有这个项目结构:Python本地包创建/导入失败(非常糟糕),python,python-3.x,visual-studio-code,Python,Python 3.x,Visual Studio Code,我有几个看似简单的用例,我觉得我错过了一步 基本上,我有这个项目结构: |- 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.set
|- 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="colin@asdf.com",
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代码中设置Python解释器,以确保它指向上述路径
但是,当我这样做时:
import aws_session_storage
…VS代码中有一行扭曲的错误:“无法导入aws_会话_存储”
如果我用import语句将包中的文件剪切粘贴到项目中,效果很好
这发生在我试图本地打包的每一段代码上
我到底错在哪里 正在尝试在您的存储库中查找包,这意味着:
一个Python模块,可以包含其他模块,也可以递归地包含其他包
(来源:)
因此,如果您将python脚本捆绑到一个模块中,您应该很好:
|- session_data_access/
| |- __init__.py
| |- session_storage_base.py
| |- aws_session_storage.py
|- README.md
|- setup.py
按照您的方式安装后,您应该能够执行以下操作:
从会话数据访问导入aws会话存储
编辑:
正如我刚才在您的评论中发现的,引入了Python 3.3,它允许您在使用
而不是setup.py
配置文件时省略\uu init\uuuuuuuuuu.py
文件。Eureka!谢谢,杰里迈尔。在我授予奖金之前,您是否愿意解释一下,当一些消息来源说在python 3.3之后不再需要init.py时,为什么我需要init.py?直到最近,我一直主要使用Python2.7,所以我实际上不知道Python3.3带来了什么!这非常有趣,感谢分享此链接:)因此,如果您通过替换setuptools.find_packages()
,您应该能够摆脱\uuuu init\uuuuuuuuuy.py
文件,有趣的是,直到我添加了init.py,它才起作用。也许有一个更新的方法。我会分开研究的。再次感谢!!!