这是我的精简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'], ) MANIFEST.in: include *.txt include whyteboard-help/*.* recursive-include locale *.mo recursive-include images *.png 当我运行“python setup.py install sdist”时,我用“whyteboard-0.41”根文件夹获得了一个不错的.tar.gz文件,里面有我的locale / images /和whyteboard-help /文件夹。 这也有我的whyteboard.py脚本从whyteboard源码包里面启动我的程序。 所以: […]
关于如何做到这一点,有大量的信息,但是由于“有一种以上的方式来剥皮猫” ,所有涉及这个过程的教程/手册似乎都做出了某些与其他的不同的假设教程,我还没有设法掌握它。 到目前为止,这是我所理解的。 我的最终目标应该是创build一个“二进制”.deb包。 这样的软件包将是平台独立(32/64位),因为所有的Python程序都是这样的。 要创build一个“二进制”包,我需要首先创build一个源包。 要创build源包,我可以使用CDBS或debhelper 。 Debhelper是初学者推荐的方法。 创build一个源代码包的核心是在源代码目录中填充DEBIAN目录,其中包含许多文件,说明需要复制文件的位置,受版权和授权scheme的约束,它们依赖于什么等等。 如果 python源代码还带有一个distutils的setup.py脚本,第四步可以在很大程度上自动执行dh_make命令。 现在我的问题: 我的理解过程是否正确? 有什么我失踪,或者我错了什么? 步骤#5对我来说真的更令人困惑:具体来说,对我来说最难掩的两点是: 如何编写安装独立程序的setup.py脚本? 编辑:通过独立程序我的意思是一个程序,旨在由桌面用户(而不是一个模块 ,我明白像一个function的集合,被其他软件导入后使用)使用的程序。 在我的具体情况下,我实际上需要两个这样的“程序”:主要软件和一个单独的工具(实际上是第二个“程序”应该与另一个相同的程序包)。 这个DEB包的脚本有什么特殊之处? 官方文档似乎只处理RPM和Windows的东西… 顺便说一句:这是迄今为止我能find的最好的信息来源。 如果你有比这更好的东西,请分享! 🙂 Ubuntu的Python包装指南 从python setup.py创build一个.deb包 (它显示的步骤,但没有解释 ,足够让我跟随) ShowMeDo关于“用python编写一个.deb软件包”的video (它看起来不是最新的,如果我没有错误的话)会生成一些供个人使用的软件包,没有依赖关系,没有签名的变更日志和其他关键数据将使其与Debian政策不相容)。
在执行python setup.py install PyPI包时,有没有人遇到这个警告? install_requires定义了软件包需要什么。 很多PyPI包都有这个选项。 这怎么可能是一个“未知的分配选项”?
我通常通过pip安装python包。 对于Google App Engine,我需要将软件包安装到其他目标目录。 我试过了: pip安装-I烧瓶安息–target ./lib 但它失败: 必须提供家庭或前缀/ exec-前缀 – 不是两个 我怎样才能使这个工作?
我试图安装我最近获得访问的系统的Python包。 我试图利用Python的相对较新的每用户site-packages目录 ,以及新的选项–user 。 (这个选项目前没有logging ,但是它对于Python 2.6+是存在的;你可以通过运行python setup.py install –help来看到帮助。) 当我尝试跑步 python setup.py install –user 在我下载的任何软件包上,我总是得到以下错误: error: can't combine user with with prefix/exec_prefix/home or install_(plat)base 这个错误非常令人困惑,因为你可以看到,我没有提供–prefix ,– –exec-prefix ,– –install-base或者–install-platbase标志作为命令行选项。 我浪费了很多时间来弄清楚问题所在。 我在下面logging了我的答案,希望能够让其他一些可怜的灵魂在几个小时的牦牛剃毛之后 。
Python有一个令人困惑的工具历史logging,可用于打包和描述项目:这包括标准库中的distutils , 分发 , distutils2和setuptools等等。 似乎分发和distutils2停止赞成setuptools ,这留下了两个相互竞争的标准。 据我所知, setuptools比distutils提供了更多的select(例如声明依赖关系,testing等),但它并不包含在python标准库中(还有?)。 Python打包用户指南 [ 1 ]现在推荐: 使用setuptools定义项目并创build源分配。 并解释说: 尽pipe您可以在很多项目中使用纯粹的distutils,但是它不支持在其他项目上定义依赖项,并且缺less一些便利的实用程序来正确自动填充由setuptools提供的程序包元数据。 在标准库之外,setuptools还提供了跨越不同版本的Python的更一致的function集,(与distutils不同),setuptools将被更新,以在所有支持的版本上生成即将到来的“Metadata 2.0”标准格式。 即使对于select使用distutils的项目,当pip直接从源代码安装这样的项目(而不是从预build的wheel文件安装),它实际上将使用setuptools来构build项目。 但是,查看各种项目的setup.py文件显示,这似乎不是一个实际的标准。 许多软件包仍然使用distutils,而那些支持setuptools的软件包通常会将setuptools与distutils混合使用 ,例如通过执行fallback导入: try: from setuptools import setup except ImportError: from distutils.core import setup 随后尝试find一种方法来编写可以由setuptools和distutils安装的设置。 这通常包括各种容易出错的依赖性检查方式,因为distutils不支持设置函数中的依赖关系。 为什么人们仍然在为支持distutils做出额外的努力 – setuptools不在标准库中是唯一的原因呢? distutils的优点是什么,并且是否有写仅支持setuptools的 setup.py文件的缺点。
我正在尝试使用mingw(64位)在win 7 64-bit中使用cython编译python扩展。 我正在使用Python 2.6(Active Python 2.6.6)以及足够的distutils.cfg文件(将mingw设置为编译器) 执行时 > C:\Python26\programas\Cython>python setup.py build_ext –inplace 我得到一个错误,说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 […]
我正在尝试使用cygwin(mingw)在Windows 10上运行Python 3.5的一些代码。 准确地说,我正在使用PyDSTool模块,我称之为dopri集成器。 问题是,我遇到了不能识别Microsoft Visual Studio 2015的distutils问题。有没有办法避免这种情况(没有回到老版本的Python,Windows,Visual Studio)。 完整的错误可以在下面看到。 ValueError Traceback (most recent call last) <ipython-input-16-bfeb915bfd7b> in <module>() 60 print("\n") 61 —> 62 testODE = Dopri_ODEsystem(DSargs) 63 64 print('Integrating…') C:\Anaconda3\lib\site-packages\PyDSTool\Generator\Dopri_ODEsystem.py in __init__(self, kw) 371 print("stages using the makeLibSource and compileLib methods.") 372 else: –> 373 self.makeLib() 374 375 @property C:\Anaconda3\lib\site-packages\PyDSTool\Generator\mixins.py in makeLib(self, libsources, libdirs, […]
我configuration了MinGW和distutils,现在我可以使用这个命令编译扩展: setup.py install 将使用MinGW的gcc编译器,并安装软件包。 为此,我安装了MinGW并创build了具有以下内容的distutils.cfg文件: [build] compiler = mingw32 这很酷,但现在我想使用所有点的好处。 有没有办法在pip中使用相同的MinGW的gcc编译器? 所以当我运行这个: pip install <package name> 点将使用MinGW的gcc编译器,并在需要时编译C代码? 目前我得到这个错误: Unable to find vcvarsall.bat 。 似乎pip不知道我有gcc编译器。 我如何configurationpip使用gcc编译器?
我刚开始使用setuptools和virtualenv。 我的软件包需要GitHub提供的最新的python-gearman。 PyPI上的python-gearman版本是旧的版本。 Github的源码是setuptools兼容的,即setup.py等。有没有办法让setuptools下载并安装新版本,而不是在PyPI上查找并安装旧版本? 仅供参考,新的python-gearman是http://github.com/mtai/python-gearman