我正在研究PYQT-QGIS Application
,我希望我的应用程序需要最少的外部依赖项。(理想情况下没有)
Pyserial
在我正在使用的主库上,所以我想在没有安装的情况下使用这个库,让它成为我的包的一部分。我记得使用旧的pyserial
库QGIS Plugin
。
问题:
是否仍然可以在没有安装的情况下使用pyserial lib
?一些指针会有所帮助。
答案 0 :(得分:0)
查看当前的pyserial软件包setup.py,似乎有一些额外的设置在安装鸡蛋时运行:
setup(
name = "pyserial" + suffix,
description = "Python Serial Port Extension",
version = version,
author = "Chris Liechti",
author_email = "cliechti@gmx.net",
url = "http://pyserial.sourceforge.net/",
packages = ['serial', 'serial.tools', 'serial.urlhandler'],
license = "Python",
long_description = "Python Serial Port Extension for Win32, Linux, BSD, Jython, IronPython",
classifiers = [
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Intended Audience :: End Users/Desktop',
'License :: OSI Approved :: Python Software Foundation License',
'Natural Language :: English',
'Operating System :: POSIX',
'Operating System :: Microsoft :: Windows',
#~ 'Operating System :: Microsoft :: Windows :: Windows CE', # could work due to new ctypes impl. someone needs to confirm that
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.3',
'Programming Language :: Python :: 2.4',
'Programming Language :: Python :: 2.5',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.0',
'Programming Language :: Python :: 3.1',
'Programming Language :: Python :: 3.2',
'Topic :: Communications',
'Topic :: Software Development :: Libraries',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Terminals :: Serial',
],
platforms = 'any',
cmdclass = {'build_py': build_py, 'build_scripts': build_scripts},
scripts = ['serial/tools/miniterm.py'],
)
值得注意的是cmdclass和scripts部分。鸡蛋正在构建.py,.pyc和脚本文件,并且在执行此操作时似乎考虑了机器本身。除非你预先制作蛋并部署在同一平台/ python等上,否则它可能无法将其丢弃。
我强烈建议您查看Buildout以部署您的应用程序。它以可重现且高效的方式为您处理依赖性/部署问题。我目前使用它来部署与Pyserial / PYQT / Pyside的arduino项目,它的效果非常好。我希望能够在未来的此类教程中与Arduino配方分享我的GIT。
Buildout可以从互联网上获取包,也可以将所需的鸡蛋预加载到安装程序中。它基本上允许您的项目拥有一个专用的虚拟环境,其中包含所有鸡蛋/脚本"已安装"并为它配置。这对于更复杂的软件包(如iPython Notebook,Django或PyQT / pyserial)特别有用,因为它实际上安装/构建了鸡蛋,就像直接在机器上安装一样,但这样做的方式不会影响其他工具/项目。