标签: python-packaging

为什么 python setup.py bdist_wheel 创建一个构建文件夹?

感谢这个精彩的教程,我刚刚学会了将我自己的 python 包上传到 PyPI 我现在试图更好地理解如何wheels工作,我发现了这篇文章很有帮助。

但是,我仍然不明白为什么python setup.py bdist_wheel要创建一个几乎空的目录,并build以两个子文件夹命名:(bdist.win-amd64空)和lib(其中包含我的包的副本),以及开发人员稍后将通过执行 .txt 文件上传到 PyPI 的目录中的.whl文件。distpython -m twine upload dist/*

为什么build需要这个目录?我的意思是,dist目录还不够吗?而且,如果代码没有实际编译,为什么.whl称为二进制发行版。

distutils setuptools python-wheel python-packaging

4
推荐指数
1
解决办法
8340
查看次数

Poetry 构建的包缺少运行时依赖项

我一直在从事一个项目,到目前为止只涉及构建一些云基础设施,现在我正在尝试添加一个 CLI来简化一些 AWS Lambda 的运行。不幸的是,使用构建的 sdist 和wheel 软件包poetry build似乎都不包含依赖项,因此我必须手动运行pip install所有这些软件包才能运行该命令。基本上我

\n
    \n
  1. poetry build在项目中运行,
  2. \n
  3. cd "$(mktemp --directory)",
  4. \n
  5. python -m venv .venv,
  6. \n
  7. . .venv/bin/activate,
  8. \n
  9. pip install /path/to/result/of/poetry/build/above, 进而
  10. \n
  11. 运行新的 .venv/bin/ 可执行文件。
  12. \n
\n

此时可执行文件失败,因为pip没有安装任何包依赖项。如果我pip show PACKAGE该行Requires是空的。

\n

Poetry 手册似乎没有指定如何将依赖项链接到构建的包,那么我该怎么办呢?

\n

我正在使用一些可选的依赖项,这会干扰构建过程吗?需要明确的是,即使是非可选依赖项也不会显示在依赖项中。

\n

pyproject.toml:

\n
[build-system]\nrequires = ["poetry-core>=1.0.0"]\nbuild-backend = "poetry.core.masonry.api"\n\n[tool.black]\nline-length = 100\n\n[tool.coverage.report]\nexclude_lines = [\n    \'if TYPE_CHECKING:\',\n    \'if …
Run Code Online (Sandbox Code Playgroud)

requirements python-packaging python-poetry

4
推荐指数
1
解决办法
5188
查看次数

Python:如何使 Poetry 包含不在子路径上的包/模块?

我在一个存储库中有两个 Python 项目,它们都依赖于共享实用程序包。我的目标是将这两个项目分别打包在一个软件分发包中(即一个.tzr.gz文件)

\n

我目前正在使用以下方法完成此操作setuptoolssetup.py文件来完成这项工作,但遇到了困难。我更愿意使用 Poetry 来分别管理和打包这两个项目。

\n

请考虑我的问题的“最小重现”:

\n
repo\n    project1/ \n        __init__.py\n        main_module.py\n        pyproject.toml\n    project2/ \n        __init__.py\n        main_module.py\n        pyproject.toml\n    util/\n        __init__.py\n        util_module.py\n
Run Code Online (Sandbox Code Playgroud)\n

我试图通过修改Poetryutil在构建时包含该包project1project.toml

\n
[tool.poetry]\nname = "project1"\nversion = "0.1.0"\ndescription = ""\nauthors = [""]\npackages = [\n    { include = "../util/*.py" }\n]\n\n[tool.poetry.dependencies]\npython = "^3.9"\n\n[tool.poetry.dev-dependencies]\npytest = "^5.2"\n\n[build-system]\nrequires = ["poetry-core>=1.0.0"]\nbuild-backend = "poetry.core.masonry.api"\n\n
Run Code Online (Sandbox Code Playgroud)\n

当我跑步时poetry build我收到此错误:

\n
Building project1 (0.1.0)\n  - Building sdist\n\n  ValueError\n\n  \'C:\\\\repo\\\\util\\\\__init__.py\' is not in the …
Run Code Online (Sandbox Code Playgroud)

python sdist python-packaging python-poetry

4
推荐指数
1
解决办法
1万
查看次数

从 python 代码中的 pyproject.toml 获取应用程序版本

我对 python 不太熟悉,我只用它做过自动化,所以我对包和其他东西都是新手。
\n我正在使用 Flask、Gunicorn 和 Poetry 创建一个 API。
\n我注意到 pyproject.toml 中有一个版本号,我想创建一个路由 /version 来返回我的应用程序的版本。
\n我的应用程序结构如下所示:

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 poetry.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tests\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wsgi.py\n
Run Code Online (Sandbox Code Playgroud)\n

wsgi.py运行应用程序的主文件在哪里。

\n

我看到人们使用 importlib 但我没有找到如何让它工作,因为它与以下命令一起使用:
\n __version__ = importlib.metadata.version("__package__")
\n但我不知道这个的含义。

\n

python python-importlib python-packaging python-poetry

4
推荐指数
1
解决办法
4456
查看次数

纯粹依赖 pyproject.toml 有哪些缺点?

假设您有一个 Python 程序,仅使用pyproject.toml. 有什么缺点?为什么在这种情况下使用setup.pyor ?setup.cfg

python setuptools setup.py python-packaging pyproject.toml

4
推荐指数
1
解决办法
334
查看次数

根据实际或事实上的标准,Python src 文件夹中还包含哪些内容?

当在 Python 项目中使用src 布局而不是平面布局时,除了项目模块之外,文件夹中是否还有其他内容src

\n

我的理解是,如果我在下面的布局中添加under并将结果发布到 PyPI,任何执行过 a 的人都mypkg2能够(这可能令人惊讶)。我错过了什么吗?srcpip installimport mypkgimport mypkg2

\n
project_root_directory\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml  # AND/OR setup.cfg, setup.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src/\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mypkg/\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module.py\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 subpkg1/\n        \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n        \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\n        \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module1.py\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 subpkg2/\n            \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n            \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\n            \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module2.py\n
Run Code Online (Sandbox Code Playgroud)\n

来自https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#src-layout的示例布局

\n

我无法找到包含其他任何内容的项目示例,也无法找到不要在其中放置任何其他内容的明确指示。我正在寻找可以回答这个问题的 PEP 或包装文件。

\n

python python-packaging

4
推荐指数
1
解决办法
4648
查看次数

为 Ansible 安装 Azure 支持

我正在尝试让 Ansible 将资源部署到 Azure 云,但在让它开始工作时出现错误。我全新安装了 Ubuntu 14.04

我已经通过运行以下命令安装了 ansible:

 - sudo apt-get install software-properties-common
 - sudo apt-add-repository ppa:ansible/ansible
 - sudo apt-get update
 - sudo apt-get install ansible
Run Code Online (Sandbox Code Playgroud)

我还通过运行命令安装了 pip

 - sudo easy_install pip
Run Code Online (Sandbox Code Playgroud)

这一切都是为了在服务器上安装 ansible。然后我按照此处给出的说明开始使用 Ansible 的 Azure 组件。

我运行命令sudo pip install "azure==2.0.0rc5"以获取 Azure Python SDK。然后我创建了一个简单的 yaml 文件来创建资源组,当我通过运行命令运行剧本时,ansible-playbook test.yml -vvv返回了以下错误:

致命:[本地主机]:失败!=> {“更改”:false,“失败”:true,“调用”:{“module_args”:{“ad_user”:null,“append_tags”:true,“client_id”:null,“force”:false,“ location”:null,“name”:“test”,“password”:null,“profile”:null,“secret”:null,“state”:“present”,“subscription_id”:null,“tags”:null , "tenant": null}, "module_name": "azure_rm_resourcegroup"}, "msg": "你安装了 azure==2.0.0rc5 吗?试试pip install azure==2.0.0rc5- 没有名为 enum 的模块"}

azure ansible python-packaging

3
推荐指数
1
解决办法
2850
查看次数

为什么Python没有预先构建所需的库,如pandas,numpy等

包单独分发的原因是什么?

  • 为什么我们有单独的'附加'包,如熊猫,numpy?
  • 由于这些模块看起来如此重要,为什么这些不是Python本身的一部分?

Python的"单一发行版"是否已预先加载?

  • 如果将"核心"与其他功能分开是设计的一部分,那么在这种情况下,一旦启动Python,它至少应该"预先导入".

  • 如果它们存在,我在哪里可以找到这样的分布?

python packages anaconda canopy python-packaging

3
推荐指数
1
解决办法
633
查看次数

setup.py脚本使用find_packages()与“ requirements.txt”之间的区别

我一直在将python项目打包,以便可以在实验室中的其他系统上安装它。在有关如何创建setup.py脚本的研究中,我看到了两种方法。

1)使用“ pip Frozen> requirements.txt”命令;然后在安装脚本中输入“ packages ='requirements.txt'”

2)只需在安装脚本中使用“ packages = find_packages()”

我的问题是,这两种方法有什么区别?似乎“ find_packages”与“ pipfreeze”功能相同,但是在没有模块安装的地方没有任何作用。

谁能解释这两种方法的不同之处,或者只是解释每种方法的作用,这样我就可以更明智地决定使用哪种方法?

谢谢!

python pip setuptools python-packaging

3
推荐指数
1
解决办法
1004
查看次数

在弃用受支持的 Python 版本时,我应该修改 SemVer 的哪个部分?

如果一个库同时支持 Python 2 和 3,并且我想弃用对 Python 2 的支持,我应该修改 SemVer 的哪个部分,主要还是次要?

python semantic-versioning python-packaging

3
推荐指数
1
解决办法
536
查看次数