标签: setuptools

如何在install_requires中指定版本范围(setuptools,distribute)

我想制作一个包依赖于特定的版本范围,例如>= 0.5.0, < 0.7.0.是否有可能在install_requires选项中,如果是这样,应该如何?

python setuptools

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

install_requires基于python版本

我有一个模块可以在python 2和python 3上工作.在Python <3.2中我想安装一个特定的包作为依赖.对于Python> = 3.2.

就像是:

 install_requires=[
    "threadpool >= 1.2.7 if python_version < 3.2.0",
 ],
Run Code Online (Sandbox Code Playgroud)

怎么能做到这一点?

python distutils setuptools distribute install-requires

39
推荐指数
2
解决办法
9137
查看次数

确定easy_install/setuptools的版本

我正在尝试安装使用easy_install的couchapp - 并且非常明确地说明需要特定版本的easy_install/setuptools:0.6c6.我似乎已经在我的Mac上安装了easy_install,但是没有命令行参数来检查版本.我不想仅仅在顶部安装新版本,而是先看看是否有必要.

那么:关于我如何看到我的机器上安装了什么版本的setuptools/easy_install的指示?

我不是Python开发人员,所以我假设这是一个简单的问题.但是,我没有通过谷歌或SOF在这里找到任何东西.

python setuptools easy-install

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

pip是否从基于setuptools/distribute的源处理extras_requires?

我有一个带有setup.py的包"A"和一个extras_requires行,如:

extras_require = {
    'ssh':  ['paramiko'],
},
Run Code Online (Sandbox Code Playgroud)

一个依赖于util的包"B":

install_requires = ['A[ssh]']
Run Code Online (Sandbox Code Playgroud)

如果我运行python setup.py installsetuptools.command.easy_install引擎盖下使用的软件包B,extras_requires则会正确解析,并安装了paramiko.

但是,如果我运行pip /path/to/Bpip hxxp://.../b-version.tar.gz安装包A,但paramiko不是.

因为pip"从源代码安装",我不太清楚为什么这不起作用.它应该调用B的setup.py,然后解析和安装B和A的依赖关系.

这可能与pip有关吗?

python pip setuptools distribute

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

setup.py(setuptools)和源代码中的自动版本号?

情况:

我有一个python库,由git控制,并与distutils/setuptools捆绑在一起.我想基于git标签自动生成版本号,包括for setup.py sdist和alike命令,以及库本身.

对于我可以使用的第一个任务git describe或类似的解决方案(请参阅 如何在我的包中的setup.py(setuptools)中定义版本?).

例如,当我在标签'0.1'并且要求'setup.py sdist'时,我得到'mylib-0.1.tar.gz'; 或'mylib-0.1-3-abcd.tar.gz'如果我在标记后更改了代码.这可以.

问题是:

当我想让这个版本号可用于库本身时,问题出现了,所以它可以将它作为'mylib/0.1-3-adcd'发送到User-Agent HTTP头中.

如果我添加setup.py version命令,如何在我的包中获得setup.py(setuptools)中定义的版本?,然后在制作标签后生成此version.py,因为它使用标记作为值.但是在这种情况下,我需要在制作版本标记之后再进行一次提交,以使代码保持一致.反过来,这需要一个新标签进行进一步捆绑.

问题是:

如何打破这个依赖圈(generate-commit-tag-generate-commit-tag -...)?

python git distutils version setuptools

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

在 pyproject.toml 中指定包数据

我用setuptools。在 中setup.cfg,我可以定义

[options.package_data]
myModule =
    '*.csv'
Run Code Online (Sandbox Code Playgroud)

确保为我的用户安装数据。

我可以用它来达到同样的效果pyproject.toml吗?

python pip setuptools

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

Python setuptools:如何包含配置文件以分发到<prefix>/etc

我怎么写setup.py这样:

  1. 二元蛋分发(bdist_egg)包括一个示例配置文件和
  2. 安装后将其放入{prefix}/etc目录?

示例项目源目录如下所示:

bin/
   myapp
etc/
   myapp.cfg
myapp/
    __init__.py
    [...]
setup.py
Run Code Online (Sandbox Code Playgroud)

setup.py看起来像这样:

from distutils.command.install_data import install_data

packages = ['myapp', ]
scripts = ['bin/myapp',]
cmdclasses = {'install_data': install_data}
data_files = [('etc', ['etc/myapp.cfg'])]

setup_args = {
    'name': 'MyApp',
    'version': '0.1',
    'packages': packages,
    'cmdclass': cmdclasses,
    'data_files': data_files,
    'scripts': scripts,
#    'include_package_data': True,
    'test_suite': 'nose.collector'
}

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

setup(**setup_args)
Run Code Online (Sandbox Code Playgroud)

setuptools安装在构建环境和安装环境中.

'include_package_data'注释掉与否没有帮助.

python setuptools

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

如何在源代码中使用package_data中的数据?

在setup.py中,我已经指定了package_data,如下所示:

packages=['hermes'],
package_dir={'hermes': 'hermes'},
package_data={'hermes': ['templates/*.tpl']},
Run Code Online (Sandbox Code Playgroud)

我的目录结构粗略

hermes/
 |
 | docs/
 | ...
 | hermes/
    | 
    | __init__.py
    | code.py
    | templates
        |
        | python.tpl
 |
 | README
 | setup.py
Run Code Online (Sandbox Code Playgroud)

问题是我需要在源代码中使用templates目录中的文件,这样我就可以写出python代码(这个项目是一个解析器生成器).我似乎无法弄清楚如何正确地包含和使用我的代码中的这些文件.有任何想法吗?

python distutils build setuptools distribute

33
推荐指数
1
解决办法
9850
查看次数

如何在bin/python bootstrap.py -d期间解决pkg_resources.VersionConflict错误

我想使用python plone-devstart.py工具创建一个新的plone环境.我有一个引导程序错误.所以我在项目目录中使用了命令bin/python bootstrap.py -d.它(bin/python bootstrap.py -d命令)之前工作正常但是现在我得到了一个错误

oomsys@oomsysmob-6:~/demobrun$ bin/python bootstrap.py -d
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-  
0.6.49.tar.gz
Extracting in /tmp/tmpDqVwYA
Now working in /tmp/tmpDqVwYA/distribute-0.6.49
Building a Distribute egg in /tmp/tmpv4Bzyv
/tmp/tmpv4Bzyv/distribute-0.6.49-py2.7.egg
Traceback (most recent call last):
File "bootstrap.py", line 118, in <module>
ws.require('zc.buildout' + VERSION)
File "build/bdist.linux-i686/egg/pkg_resources.py", line 698, in require
File "build/bdist.linux-i686/egg/pkg_resources.py", line 600, in resolve
pkg_resources.VersionConflict: (setuptools 0.6c11 (/home/oomsys/demobrun  
/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg),    
Requirement.parse('setuptools>=0.7'))
Run Code Online (Sandbox Code Playgroud)

python setuptools buildout

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

如何将安装后脚本添加到easy_install/setuptools/distutils?

我希望能够在我的setup.py中添加一个钩子,它将在安装后运行(当easy_install'ing或者在进行python setup.py安装时).

在我的项目PySmell中,我有一些Vim和Emacs的支持文件.当用户以通常的方式安装PySmell时,这些文件将被复制到实际的egg中,并且用户必须将它们删除并将它们放在他的.vim或.emacs目录中.我想要的是询问用户,安装后,他希望复制这些文件的位置,甚至只是打印文件位置的消息以及他应该如何处理它们.

做这个的最好方式是什么?

谢谢

我的setup.py看起来像这样:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from setuptools import setup

version = __import__('pysmell.pysmell').pysmell.__version__

setup(
    name='pysmell',
    version = version,
    description = 'An autocompletion library for Python',
    author = 'Orestis Markou',
    author_email = 'orestis@orestis.gr',
    packages = ['pysmell'],
    entry_points = {
        'console_scripts': [ 'pysmell = pysmell.pysmell:main' ]
    },
    data_files = [
        ('vim', ['pysmell.vim']),
        ('emacs', ['pysmell.el']),
    ],
    include_package_data = True,
    keywords = 'vim autocomplete',
    url = 'http://code.google.com/p/pysmell',
    long_description =
"""\
PySmell is a python IDE …
Run Code Online (Sandbox Code Playgroud)

python distutils setuptools

32
推荐指数
1
解决办法
9470
查看次数