Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python本地包创建/导入失败(非常糟糕)_Python_Python 3.x_Visual Studio Code - Fatal编程技术网

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,它才起作用。也许有一个更新的方法。我会分开研究的。再次感谢!!!