小编sin*_*roc的帖子

如何在setuptools项目的pyproject.toml中引用requirements.txt?

我正在尝试将基于setuptools的项目从传统配置迁移setup.py到现代pyproject.toml配置。

同时,我希望保持基于 的完善工作流程pip-compile,即 arequirements.in被编译为 a requirements.txt(当然对于最终用户/非库项目)。由于完全透明,这具有重要的好处:

  • 由于固定了依赖项的完全传递闭包,因此安装可实现 100% 可重现。
  • 更好地理解依赖传递闭包中的依赖冲突。

因此,我不想pyproject.toml通过dependencies = []列表直接在内部维护依赖项,而是在pip-compiled托管的外部维护requirements.txt

这让我想知道:有没有一种方法可以requirements.txtpyproject.toml配置中引用文件,而不必回退到setup.py脚本?

python pip setuptools pyproject.toml

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

使用pyproject.toml时还需要requirements.txt吗?

自 2022 年中期以来,现在可以取消setup.pysetup.cfg转而使用pyproject.toml. 可编辑安装适用于最新版本的 setuptools 和 pip,甚至官方打包教程setup.py也从pyproject.toml.

然而,有关的文档requirements.txt似乎也已被删除,我想知道现在将固定的需求放在哪里?

回顾一下:过去的常见做法是放置依赖项(没有版本固定),以setup.py避免当此包与需要相同依赖项但版本要求冲突的其他包一起安装时出现问题。对于打包库来说, asetup.py通常就足够了。

对于部署(即非库),您通常还提供requirements.txt版本固定的依赖项。因此,您不会意外地获得该包经过测试的最新、最好的依赖项版本。

所以我的问题是,有什么改变吗?requirements.txt当与 一起使用时,您仍然将固定的需求放在其中吗pyproject.toml?或者有一个额外的部分pyproject.toml吗?某处有相关文档吗?

python requirements.txt python-packaging pyproject.toml

49
推荐指数
3
解决办法
2万
查看次数

消息“错误:需要 Microsoft Visual C++ 14.0 或更高版本。”

在下载的时候pip install allennlp==1.0.0 allennlp-models==1.0.0,我遇到了这样的问题:

\n
        [6 lines of output]\n        running bdist_wheel\n        running build\n        running build_py\n        running build_ext\n        building \'srsly.msgpack._unpacker\' extension\n        error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/\n        [end of output]\n\n        note: This error originates from a subprocess, and is likely not a problem with pip.\n        ERROR: Failed building wheel for srsly\n      Failed to build thinc blis srsly\n      ERROR: Could not build wheels for srsly, which is required to …
Run Code Online (Sandbox Code Playgroud)

pip python-packaging allennlp

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

有没有一种简单的方法将 setup.py 转换为 pyproject.toml

我们有多个 python 项目,正在考虑将它们转换为使用pyproject.toml而不是setup.py.

有没有一种简单的方法可以自动执行此操作?

setuptools setup.py python-packaging pyproject.toml

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

python pip优先顺序与index-url和extra-index-url

我搜索了一下但找不到明确的答案。
目标是拥有两个点指数,一个是私有指数,这将是首要任务。其中之一是标准 PyPI。首要任务是防止代码注入的安全风险。

假设我有一个名为 的库lib,并且我配置index_url = http://my_private_pypi_repoextra_index_url = https://pypi.org/simple

如果 I pip install lib、 和 都lib存在于两个索引中。什么索引会优先?将从哪里安装?

另外,如果pip install lib=0.0.2我的私有索引中存在 0.0.1 版本的 lib。它也会考虑 PyPI 吗?

什么是控制的好方法,某些库仅从私有索引中获取(如果它们存在),并且不会在 PyPI 中查找?

python pip pypi python-packaging

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

pyproject.toml 中的 [tool.poetry] 和 [project] 表有什么区别?

语境

因此,我尝试按照本教程创建一个新的 Python 包:https://packaging.python.org/en/latest/tutorials/packaging-projects/

正如教程所说,在我的pyproject.tomlI 中应该具有以下结构:

[project]
name = "example_package_YOUR_USERNAME_HERE"
version = "0.0.1"
authors = [
  { name="Example Author", email="author@example.com" },
]
description = "A small example package"
Run Code Online (Sandbox Code Playgroud)

但是当我用 创建这个文件时poetry init,它创建了这个结构:

[tool.poetry]
name = "example_package_YOUR_USERNAME_HERE"
version = "0.0.1"
authors = [
  { name="Example Author", email="author@example.com" },
]
description = "A small example package"
Run Code Online (Sandbox Code Playgroud)

两者之间的主要区别在于[project]代替[tool.poetry]节标题。我还看到,poetry当没有[tool.poetry]部分时,这对项目没有任何作用pyproject.toml


所以我的问题是:

  1. 这两者有什么区别?

  2. 我的 中应该只有一个还是同时有两个pyproject.toml?如果我应该保留两者,它应该包含什么?

  3. 如果应该只有[tool.poetry],我是否需要遵循与 相同的内容和子部分规则[project]?例如, …

setuptools pypi python-packaging python-poetry pyproject.toml

22
推荐指数
1
解决办法
7091
查看次数

pkg_resources 作为 API 已被弃用

当我尝试从 .tar.gz 包安装时,同时将警告变为错误:

python -W error -m pip install /some/path/nspace.pkga-0.1.0.tar.gz
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ERROR: Exception:
Traceback (most recent call last):
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 169, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 248, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/commands/install.py", line 324, in run
    session = self.get_default_session(options)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 98, in get_default_session
    self._session = self.enter_context(self._build_session(options))
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 125, in _build_session
    session = PipSession(
              ^^^^^^^^^^^
  File "/opt/util/nspace1/lib/python3.11/site-packages/pip/_internal/network/session.py", line 342, in __init__
    self.headers["User-Agent"] = user_agent()
                                 ^^^^^^^^^^^^
  File …
Run Code Online (Sandbox Code Playgroud)

python pip setuptools deprecation-warning

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

未找到 Ubuntu 命令“pip”,但有 18 个类似的命令

我正在尝试安装一个工具包,我正在使用 ubuntu 使用 WSL - 我昨天下载了 ubuntu。以下是此工具包的安装过程。 在 Windows cmd 上它说我有 python 3.7.9 但在 ubuntu 上它说我有 python 3.8.2

git clone https://github.com...
cd program
pip install -e .
Run Code Online (Sandbox Code Playgroud)

或者:

pip install program
Run Code Online (Sandbox Code Playgroud)

pip install -e . 对我不起作用,我收到此错误:

user@DESKTOP-REA10BN:~/gym$ pip install -e .

Command 'pip' not found, but there are 18 similar ones.
Run Code Online (Sandbox Code Playgroud)

但是,我检查并安装了 pip,这是我在运行之前检查的内容:

user@DESKTOP-REA10BN:~$ cd\
> sudo apt-get install python-pip
cdsudo: command not found
user@DESKTOP-REA10BN:~$ python3 --version
Python 3.8.2
user@DESKTOP-REA10BN:~$ python3-pip --version
python3-pip: command not found
user@DESKTOP-REA10BN:~$ which pip3
/usr/bin/pip3 …
Run Code Online (Sandbox Code Playgroud)

python linux ubuntu pip path

14
推荐指数
2
解决办法
5万
查看次数

Pip pyproject.toml:可选依赖项组是否需要其他可选依赖项组?

我正在使用最新版本的 pip 23.01,. 我有一个pyproject.toml包含依赖项和可选依赖项组(又名“额外”)的文件。为了避免冗余并使管理可选依赖项组更容易,我想知道如何让可选依赖项组需要其他可选依赖项组。

我有一个pyproject.toml可选依赖项组在依赖项中有冗余重叠的情况。我想他们可以用“等级制”来形容。它看起来像这样:

[project]
name = 'my-package'
dependencies = [
    'pandas',
    'numpy>=1.22.0',
    # ...
]

[project.optional-dependencies]
# development dependency groups
test = [
    'my-package[chem]',
    'pytest>=4.6',
    'pytest-cov',
    # ...
    # Redundant overlap with chem and torch dependencies
    'rdkit',
    # ...
    'torch>=1.9',
    # ...
]

# feature dependency groups
chem = [
    'rdkit',
    # ...
    # Redundant overlap with torch dependencies
    'torch>=1.9',
    # ...

]
torch = [
    'torch>=1.9',
    # ...
]
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,pip install …

python pip toml python-packaging pyproject.toml

14
推荐指数
1
解决办法
9212
查看次数

从 github 运行 tox 时出现“ERROR: py37: InterpreterNotFound: python3.7”

我在 GitHub 上有一个带有 tox.ini 文件的项目:

[tox]
envlist = py3

[testenv]
deps = -rrequirements.txt
commands =
    pytest --doctest-modules
Run Code Online (Sandbox Code Playgroud)

效果很好。但是当我用“py37”替换“py3”时,它失败并出现错误:

ERROR:  py37: InterpreterNotFound: python3.7
Run Code Online (Sandbox Code Playgroud)

据我所知,tox应该支持Python 3.7。这是 github 上的 tox 特有的问题吗?

github tox python-3.7 github-actions

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