我想制作一个包依赖于特定的版本范围,例如>= 0.5.0, < 0.7.0.是否有可能在install_requires选项中,如果是这样,应该如何?
我有一个模块可以在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)
怎么能做到这一点?
我正在尝试安装使用easy_install的couchapp - 并且非常明确地说明需要特定版本的easy_install/setuptools:0.6c6.我似乎已经在我的Mac上安装了easy_install,但是没有命令行参数来检查版本.我不想仅仅在顶部安装新版本,而是先看看是否有必要.
那么:关于我如何看到我的机器上安装了什么版本的setuptools/easy_install的指示?
我不是Python开发人员,所以我假设这是一个简单的问题.但是,我没有通过谷歌或SOF在这里找到任何东西.
我有一个带有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 install在setuptools.command.easy_install引擎盖下使用的软件包B,extras_requires则会正确解析,并安装了paramiko.
但是,如果我运行pip /path/to/B或pip hxxp://.../b-version.tar.gz安装包A,但paramiko不是.
因为pip"从源代码安装",我不太清楚为什么这不起作用.它应该调用B的setup.py,然后解析和安装B和A的依赖关系.
这可能与pip有关吗?
情况:
我有一个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 -...)?
我用setuptools。在 中setup.cfg,我可以定义
[options.package_data]
myModule =
'*.csv'
Run Code Online (Sandbox Code Playgroud)
确保为我的用户安装数据。
我可以用它来达到同样的效果pyproject.toml吗?
我怎么写setup.py这样:
bdist_egg)包括一个示例配置文件和{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'注释掉与否没有帮助.
在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 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) 我希望能够在我的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 ×10
setuptools ×10
distutils ×4
distribute ×3
pip ×2
build ×1
buildout ×1
easy-install ×1
git ×1
version ×1