标签: setuptools

pip从setup.py安装tox的tox依赖项

我制作了我的项目,setuptools我想用它进行测试tox.我在变量中列出了依赖项并添加到setup()参数(tests_requireextras_require)中.我的项目需要安装tests_require测试中列出的所有依赖项,但pip install不安装它们.

我尝试了这个,但它不起作用:

install_command = pip install {opts} {packages}[tests]
Run Code Online (Sandbox Code Playgroud)

如何安装测试依赖项而无需管理多个依赖项列表(即在两者test_requirements.txttests_require变量中列出所有依赖项)?

python pip setuptools easy-install tox

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

RemoveError: 'setuptools' 是 conda 的依赖项,无法从 conda 的运行环境中删除

我有赢 10

运行时:

conda update conda
Run Code Online (Sandbox Code Playgroud)

我遇到了这个错误:

RemoveError: 'setuptools' is a dependency of conda and cannot be removed from
conda's operating environment.
Run Code Online (Sandbox Code Playgroud)

似乎没什么帮助

我尝试卸载 anaconda 并收到一条成功消息,但似乎仍有一些旧版本的痕迹仍然存在

如何彻底清除 Anaconda 安装的所有痕迹?

python windows-installer setuptools anaconda conda

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

如何在不使用 setup.py 文件的情况下构建源代码分发版?

具有以下包结构

.
??? my_package
?   ??? __init__.py
??? setup.cfg
??? setup.py
Run Code Online (Sandbox Code Playgroud)

的内容 setup.py

from setuptools import setup
setup()
Run Code Online (Sandbox Code Playgroud)

的内容 setup.cfg

[metadata]
name = my_package
version = 0.1

[options]
packages = find:
Run Code Online (Sandbox Code Playgroud)

我可以my_package像这样构建轮子或源代码分发

pip wheel --no-deps -w dist .
# generates file ./dist/my_package-0.1-py3-none-any.whl
python setup.py sdist
# generates file ./dist/my_package-0.1.tar.gz
Run Code Online (Sandbox Code Playgroud)

但是根据setuptools 的维护者的说法,声明式构建配置是理想的,使用命令式构建将是一种代码味道。所以我们替换setup.pypyproject.toml

.
??? my_package
?   ??? __init__.py
??? setup.cfg
??? pyproject.toml
Run Code Online (Sandbox Code Playgroud)

的内容 pyproject.toml

[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "wheel"]
Run Code Online (Sandbox Code Playgroud)

你仍然可以像以前一样构建一个轮子,它可以工作。但是 …

python setuptools pypi python-packaging pyproject.toml

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

用于构建发行版 setup.py build 与 python -m build 的 Python 命令

我正在学习 Python 打包,根据本指南,构建 python 分发包的命令似乎是python3 -m build.

\n

但我还发现 setuptools 中有一个用于 setup.py 文件的命令行界面:

\n
$ python setup.py --help-commands\nStandard commands:\n  build             build everything needed to install\n  sdist             create a source distribution (tarball, zip file, etc.)\n  bdist             create a built (binary) distribution\n  bdist_dumb        create a "dumb" built distribution\n  bdist_rpm         create an RPM distribution\n  ...\n
Run Code Online (Sandbox Code Playgroud)\n

似乎python setup.py build,sdist或者 也bdist可以构建发行版,但我没有找到这些命令的详细说明,setuptools 命令参考缺少对build sdist bdist.

\n

所以我有点困惑,python setup.py build和之间有什么区别 …

python setuptools setup.py python-packaging

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

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
查看次数

关于Setuptools和替代品的问题

我最近看到了很多关于互联网的设置工具.最近,我阅读了James Bennett的On包装文章,了解为什么没有人应该使用setuptools.从我在Freenode的#python时代开始,我知道那里有一些人绝对厌恶它.我会把自己算在他们中间,但我确实使用它.

我已经使用setuptools进行足够的项目来了解它的不足之处,我更喜欢更好的东西.我并不特别喜欢鸡蛋格式以及它是如何部署的.由于所有setuptools的问题,我还没有找到更好的选择.

我对像pip这样的工具的理解是,它意味着是一个easy_install替代品(不是setuptools).实际上,pip使用了一些setuptools组件,对吧?

我的大多数软件包都使用了setuptools-aware的setup.py,它声明了所有依赖项.当他们准备好了,我将构建一个sdist,bdist和bdist_egg,并将它们上传到pypi.

如果我想切换到使用pip,我需要做些什么样的更改才能摆脱easy_install依赖?声明的依赖项在哪里?我猜我需要摆脱使用egg格式,并提供源代码分发.如果是这样,我如何生成egg-info目录?或者我甚至需要?

这将如何改变我对virtualenv的使用?virtualenv不使用easy_install来管理环境吗?

这会如何改变我对"开发"命令提供的setuptools的使用?我不应该使用它吗?有什么选择?

我基本上试图了解我的开发工作流程的样子.

在任何人建议之前,我不是在寻找依赖于操作系统的解决方案.我主要关注的是debian linux,但deb包不是一个选项,因为Ian Bicking 在这里概述了这个原因.

python packaging pip setuptools

21
推荐指数
1
解决办法
9598
查看次数

setuptools麻烦 - 不包括包,包括数据文件

我对setuptools很新.我已经看到了一些类似的问题,它有点疯狂,我似乎遵循我看到的建议,但setuptools仍然做了一些不同于我想要的东西.

这是我的项目的结构:

.
..
package1/
    __init__.py
    abc.py
    ...
tests/
    __init__.py
    test_package1.py
LICENSE
README.md
RELEASE
setup.py
Run Code Online (Sandbox Code Playgroud)

这是我的setup.py的内容:

#!/usr/bin/env python
import os
#from distutils.core import setup
from setuptools import setup, find_packages

setup(
    name='package1',
    version='1.1',
    test_suite="tests",
    packages=find_packages(exclude=['tests']),    
    include_package_data=True,
    package_data = {
        '': ['LICENSE', 'README.md5', 'RELEASE']
    },   
)
Run Code Online (Sandbox Code Playgroud)

另外,在我的清单文件中,我有:

include LICENSE
include RELEASE
include README.md
Run Code Online (Sandbox Code Playgroud)

我用以下内容构建tar:

python setup.py sdist
Run Code Online (Sandbox Code Playgroud)

我想要:

  1. tests从源代码分发中排除目录;
  2. 在site-packages目录中有LICENSE,README.md,RELEASE文件,可以在顶层,也可以在package1目录中(此时我同意).

相反,这是发生的事情:

  1. tests 目录仍然在创建的tar存档中,并安装到site-packages;
  2. 文件将复制到存档,但不会安装到程序包的站点打包目录中.

我没有想法,有人可以向我解释我做错了什么以及如何解决它?

python configuration setuptools

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

如何从本地文件系统安装(或分发)安装程序包

是否可以指定(可编辑的)源依赖关系setup.py已知驻留在本地文件系统上?

请考虑以下目录结构,所有目录结构都位于单个VCS存储库中:

projects
  utils
    setup.py
    ...
  app1
     setup.py
     ... # app1 files depend on ../utils
  app2
     setup.py
     ... # app2 files depend on ../utils
Run Code Online (Sandbox Code Playgroud)

给出以下命令:

cd projects
mkvirtualenv app1
pip install -e app1
Run Code Online (Sandbox Code Playgroud)

我想安装app1的所有依赖项,包括"utils",这是一个"可编辑"的依赖项.同样,如果我为app2做了同样的事情.

我已经试过所有不同组合打file://...的网址,install_requiresdependency_links无济于事.我想使用依赖链接URL src+file://../utils,这会告诉setuptools包的源是在这个相对路径的文件系统上.有没有办法做到这一点?

python packaging setuptools distribute

21
推荐指数
3
解决办法
4261
查看次数

你能在setuptools中为Python 2和3设置条件依赖吗?

在发布支持Python 2和3的Python egg时,您是否可以指定根据您使用的版本而更改的依赖项?例如,如果您使用dnspythonPython 2,则会调用Python 3版本dnspython3.

您能否setuptools.setup()以这样的方式编写您的函数:如果这是唯一的障碍,那么您的egg可用于两个版本,即,如果您已经运行2to3以确保库的其余部分与两个版本兼容.

我查看了这些文件,似乎无法找到这个问题的答案:

python setuptools dependency-management

21
推荐指数
1
解决办法
3144
查看次数

更新python包后出现"InvalidRequirement:无效的需求,解析错误"错误

使用pip install -U ipython运行任何使用入口点的Python脚本更新包(在我的情况下是IPython)失败后出现此错误:

Traceback (most recent call last):
  File "/home/adrian/dev/indico/env/bin/indico", line 5, in <module>
    from pkg_resources import load_entry_point
  ...
  File "/home/adrian/dev/indico/env/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 94, in __init__
    requirement_string[e.loc:e.loc + 8], requirement_string))
pkg_resources._vendor.packaging.requirements.InvalidRequirement: Invalid requirement, parse error at "'< 2.0'"
Run Code Online (Sandbox Code Playgroud)

没有其他改变,我没有更新任何其他库.

python pip setuptools

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