[英]Python Local Package Creation/Import Failing (Miserably)
我有幾個看似簡單的用例,但我覺得我錯過了一步。
基本上,我有這個項目結構:
|- 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
...我在列出的軟件包中看到了“session-data-access 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 引入了本機命名空間包,如果您在setup.py
配置中使用setuptools.find_namespace_packages()而不是setuptools.find_packages() ,它允許您省略__init__.py
文件文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.