Dyl*_*ers 2 python pip python-import pypi python-packaging
我最近创建了一个简单的 python 包/库并将其上传到(PyPI)。没关系 - 我可以将我的项目上传到 pypi 并使用 pip 再次下载它,但我无法导入它,因为它包含一个句号.
我的包被调用dcode.py(这显然会导致导入问题),我想只需键入import dcode(不带)即可导入它.py。我已经四处寻找解决方案,但似乎找不到 - 我希望能够使用别名 ( dcode) 导入它,而不是dcode.py(这显然不起作用)。有没有办法做到这一点?我假设必须有(例如,两个包discord.py和py-cord都可以使用 导入import discord。有谁知道如何做到这一点?
以防万一您需要它,我的pyproject.toml文件如下所示:
[project]
name = "dcode.py"
version = "0.0.2"
authors = [
{ name = "Dylan Rogers", email = "opendylan@proton.me" },
]
description = "dcode - the Python package for everything"
readme = "README.md"
requires-python = ">=2.0"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
[project.urls]
"Homepage" = "https://github.com/dylanopen/dcode.py"
"Bug Tracker" = "https://github.com/dylanopen/dcode.py/issues"
Run Code Online (Sandbox Code Playgroud)
我尝试过导入dcode.py:
import dcode.py
Run Code Online (Sandbox Code Playgroud)
但我刚刚收到这个错误:
File "/run/media/dylan/Programming/dcode.py-test/test.py", line 1, in <module>
import dcode_py
ModuleNotFoundError: No module named 'dcode_py'
Run Code Online (Sandbox Code Playgroud)
如果有帮助,我正在使用 Manjaro Linux(不过不知道为什么它会有所帮助,我只需要知道如何允许用户dcode.py通过键入来导入import dcode,就像他们导入discord.py为一样discord)
非常感谢您的帮助!
这是您的项目应该具有的推荐目录结构:
\ndcode.py/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 LICENSE\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dcode/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 io/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tests/\nRun Code Online (Sandbox Code Playgroud)\n这里dcode(由 定义dcode.py/src/dcode)是唯一顶级可导入包的名称。并且它还包含一个子包dcode.io(由 定义dcode.py/src/dcode/io)。
在PyPI上看到的并获得pip安装的实际分发项目的名称在包元数据中的文件中定义pyproject.toml:
[build-system]\nrequires = ["setuptools>=61.0"]\nbuild-backend = "setuptools.build_meta"\n\n[project]\nname = "dcode.py"\nversion = "0.0.1"\nauthors = [\n { name = "Dylan Rogers", email = "opendylan@proton.me" },\n]\ndescription = "dcode - the Python package for everything"\nreadme = "README.md"\nrequires-python = ">=3.8"\n\n[project.urls]\n"Homepage" = "https://github.com/dylanopen/dcode.py"\n"Bug Tracker" = "https://github.com/dylanopen/dcode.py/issues"\n\n[tool.setuptools.packages.find]\nwhere = ["src"]\nRun Code Online (Sandbox Code Playgroud)\n不要将dist包含构建的sdist和wheel分发包工件的目录推送到源代码存储库中。
不要将任何*.egg-info目录推送到源代码存储库中。
将所有实际的 Python 代码放在一个src目录中。
项目的名称可以包含一个点,例如dcode.py,但我建议不要这样做。
实际的顶级导入包和模块的名称可以与分发项目的名称完全不同。
\n如果您在 中的包元数据中声明许可证的分类器pyproject.toml,那么它应该与源代码存储库中的实际许可证文件匹配(您有一个GNU GPL v3.0许可证文件,但有一个MIT许可证分类器)。
参考:
\n| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |