我正在尝试将一个开源库移植到Python 3.(SymPy,如果有人想知道的话.)
所以,我需要2to3在为Python 3构建时自动运行.为此,我需要使用distribute.因此,我需要移植当前系统(根据doctest)distutils.
不幸的是,我不知道什么是这些模块-之间的区别distutils,distribute,setuptools.文档是最好的粗略,因为它们似乎都是彼此的分支,旨在在大多数情况下兼容(但实际上,不是全部)......等等.
有人可以解释这些差异吗?我应该用什么?什么是最现代的解决方案?(Distribute顺便说一句,我也很欣赏一些关于移植的指南,但这有点超出了问题的范围......)
如何制作setup.py包含不属于代码的文件?(具体来说,它是一个许可证文件,但它可能是任何其他东西.)
我希望能够控制文件的位置.在原始源文件夹中,该文件位于包的根目录中.(即与最顶层处于同一级别__init__.py.)我希望它在安装软件包时保持完全无论操作系统如何.我怎么做?
我刚刚开始使用setuptools和virtualenv.我的包需要最新的python-gearman,只能从GitHub获得.PyPI上的python-gearman版本是旧版本.Github源代码是setuptools兼容的,即有setup.py等.有没有办法让setuptools下载并安装新版本,而不是在PyPI上查找并安装旧版本?
仅供参考,新的python-gearman是http://github.com/mtai/python-gearman
我通常通过pip安装了python包.
对于Google App Engine,我需要将软件包安装到另一个目标目录.
我试过了:
pip install -I flask-restful --target ./lib
但它失败了:
必须提供home或prefix/exec-prefix - 而不是两者
我怎样才能让它发挥作用?
Python就可以用于打包和描述项目的工具,一个令人困惑的历史:这些包括distutils标准库中,distribute,distutils2,和setuptools(也许更多).看来,distribute和distutils2赞成被中止setuptools,这让两个相互竞争的标准.
据我所知,setuptools提供了更多的选项(例如声明依赖项,测试等)distutils,但它没有包含在Python标准库中(但是?).
所述的Python包装用户指南 [ 1 ]现在建议:
使用
setuptools定义的项目和创建源代码分发.
并解释说:
尽管您可以
distutils在许多项目中使用pure ,但它不支持在其他项目上定义依赖项,并且缺少一些便于实际自动填充包提供的包元数据的便利实用程序setuptools.作为标准库之外,setuptools还在不同版本的Python中提供更一致的功能集,并且(不同distutils)setuptools将更新以在所有支持的版本上生成即将推出的"Metadata 2.0"标准格式.即使是那些选择使用的项目
distutils,当pip直接从源代码安装这样的项目时(而不是从预先构建的wheel文件安装),它实际上会使用setuptools而不是使用它来构建项目.
但是,查看各种项目的setup.py文件会发现这似乎不是一个真正的标准.许多软件包仍在使用,distutils而那些支持setuptools经常混合setuptools使用,distutils例如通过执行后备导入:
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
Run Code Online (Sandbox Code Playgroud)
接着尝试找到一种方法来编写可由两者setuptools和两者安装的设置distutils.这通常包括各种容易出错的依赖性检查方法,因为distutils它不支持setup函数中的依赖性.
为什么人们仍然需要额外的努力来支持distutils- 事实setuptools是标准库不是唯一的原因吗? …
我正在尝试使用mingw(64位)在win 7 64位中使用cython编译python扩展.
我正在使用Python 2.6(Active Python 2.6.6)和足够的distutils.cfg文件(将mingw设置为编译器)
执行时
> C:\Python26\programas\Cython>python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,说gcc没有-mno-cygwin选项:
> C:\Python26\programas\Cython>python setup.py build_ext --inplace
running build_ext
skipping 'hello2.c' Cython extension (up-to-date)
building 'hello2' extension
C:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python26\include -IC:\Python26\PC -c hello2.c -o build\temp.win-amd64-2.6\Release\hello2.o
gcc: error: unrecognized command line option '-mno-cygwin'
error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
gcc是:
C:\>gcc --version
gcc (GCC) 4.7.0 20110430 (experimental)
Copyright (C) 2011 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?
执行python setup.py installPyPI包时是否有人遇到此警告?
install_requires定义包所需的内容.很多PyPI包都有这个选项.它怎么可能是一个"未知的分发选项"?
我试图安装Python包,这是我最近获得的一个系统.我试图利用Python相对较新的每用户site-packages目录和新选项--user.(该选项目前没有记录,但它适用于Python 2.6+;您可以通过运行来查看帮助python setup.py install --help.)
当我试着跑步时
python setup.py install --user
Run Code Online (Sandbox Code Playgroud)
在我下载的任何软件包上,我总是遇到以下错误:
error: can't combine user with with prefix/exec_prefix/home or install_(plat)base
Run Code Online (Sandbox Code Playgroud)
错误是因为非常令人困惑,因为你可以看到,我不提供--prefix,--exec-prefix,--install-base,或--install-platbase标志作为命令行选项.我浪费了很多时间试图找出问题所在.我在下面记录了我的答案,希望能让其他一些可怜的灵魂在几个小时的牦牛皮上刮胡子.
这是我删除的非代码内容的精简版setup.py脚本:
#!/usr/bin/env python
from distutils.core import setup
from whyteboard.misc import meta
setup(
name = 'Whyteboard',
version = meta.version,
packages = ['whyteboard', 'whyteboard.gui', 'whyteboard.lib', 'whyteboard.lib.pubsub',
'whyteboard.lib.pubsub.core', 'whyteboard.lib.pubsub.utils', 'whyteboard.misc'],
py_modules = ['whyteboard'],
scripts = ['whyteboard.py'],
)
Run Code Online (Sandbox Code Playgroud)
MANIFEST.in:
include *.txt
include whyteboard-help/*.*
recursive-include locale *.mo
recursive-include images *.png
Run Code Online (Sandbox Code Playgroud)
当我运行"python setup.py install sdist"时,我得到一个很好的.tar.gz,带有"whyteboard-0.41"根文件夹,里面有我的locale/images /和whyteboard-help/folders.这也有我的whyteboard.py脚本,它从whyteboard源包中启动我的程序.
所以:
whyteboard/
??? locale/
??? images
??? whyteboard-help/
??? whyteboard/
? ??? __init__.py
? ??? other packages etc
??? whyteboard.py
??? README
??? setup.py
??? CHANGELOG
Run Code Online (Sandbox Code Playgroud)
这反映了我的程序的来源,一切应该是怎样的,并且是正确的.
但是,当我运行"python setup.py install"时,我的数据文件都没有写入 …
有很多关于如何做到这一点的信息,但由于"有一种方法可以给猫皮肤",所以涵盖一些过程的所有教程/手册似乎都做出了与其他不同的某些假设.教程,我仍然无法掌握它.
到目前为止,这是我认为我理解的.
CDBS或debhelper.Debhelper是初学者的推荐方式.DEBIAN命令.dh_make现在我的问题:
setup.py安装独立程序的脚本? 编辑:通过独立程序我的意思是一个程序供桌面用户使用(而不是我理解的模块,就像导入后其他软件使用的功能集合).在我的具体情况下,我实际上需要两个这样的"程序":主软件和一个单独的实用程序(实际上是第二个"程序",应该与另一个程序包在同一个程序包中).顺便说一句:这些是迄今为止我能找到的最好的信息来源.如果你有什么比这更好的,请分享!:)
distutils ×10
python ×10
packaging ×3
setuptools ×3
install ×2
pypi ×2
build ×1
cython ×1
debhelper ×1
debian ×1
distribute ×1
installation ×1
mingw ×1
pip ×1