Ⅰ 编译安装python需要哪些依赖
依赖库:
//使用apt 安装即可
1.gcc, make, zlib1g-dev(压缩/解压缩库)
安装过程需要的库。
2.libbz2-dev
bz2支持库,若在编译安装python前没有安装,将无法通过pip install 安装提供bz2格式的第三方库,会出现unsupported archive format: .tar.bz2的错误,例如爬虫库Scrapy依赖的Twisted。
3.libsqlite3-dev
sqlite3支持库,若在编译安装python前没有安装,则python中会缺失sqlite3模块,当引入sqlite3或使用依赖sqllite3的第三方库(例如Scrapy)时,会出现ImportError: No mol named _sqllite3的错误。
//以上为编译安装前需要安装的库,可能不够全面,会不断补充。
4.其他:安装第三方库需要的库
python3-dev, libxml2-dev, libxslt1, libffi-dev, libssl-dev等,在安装第三方库会有具体说明,不做过多解释。
安装:
//通过wget获取压缩包,这里选择3.6.1版
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
//解压
tar xJf Python-3.6.1.tar.xz
cd Python-3.6.1
./configure
make
/*这步如果需要sudo,请使用sudo -H命令,即sudo -H make install,避免pip等模块安装失败。
错误示例(pip安装失败):The directory '/home/ls/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
*/
make install
Ⅱ 怎样将python程序及其依赖打包成rpm包部署
可以的,虽然说pip比较流行,但rpm从原理上完全可以覆盖这些部署过程,只有一些小的要求:
所有环境的Python安装方式必须一致,不能存在某些Python是2.6,某些是2.7,某些装在/usr/local下面,某些在/usr/lib下面之类的情况
如果带有C扩展的话,链接到的库应当是来自某个rpm包的。如果没有的话就简单多了。
如果有依赖的其他Python包的话,需要把依赖的包也做成rpm;实在偷懒也可以打进同一个rpm中。
实际上发行版中有许多Python库都以rpm的形式提供,不过一般我们嫌它版本旧,更倾向于用pip管理一组新的。
要写一个rpm spec,可以从头自己写,也可以参考一些其他软件的spec,我建议你采用后者,既然你们公司已经广泛使用rpm了,那肯定有很多本公司的spec可以参考,也有人可以问。
回到话题,写rpm spec,或者说rpmbuild的过程,分成以下步骤:
部署源代码,一般来说将一个.tar.gz复制到SRC目录中,然后用%setup宏就可以了,这个宏也基本上没干什么特别的事,就是把.tar.gz解压缩了一下,然后进入相应目录。.tar.gz只要从git中取出干净的源代码,整个目录打成tar包就可以了。好像还有专门的git-archive命令。
build过程,对应C/C++项目中的./configure, make。对Python项目来说一般可以跳过,因为setup.py都会搞定。也可以选择在这个阶段使用setup.py进行build,build出一个wheel包来,这是我推荐的方法,因为wheel包和直接setup.py install的目录结构有一些差异,而pip安装默认是按照wheel的方式。也就是说在这一步调用:setup.py bdist_wheel。再精细一点可以指定build的目标为build目录,这样需要cleanup的时候容易一些。
install过程,对应C/C++项目中的make install。一般来说我们平时怎么装这个软件,这一步就怎么装,所以我们也是使用setup.py。唯一的技巧在于,我们需要指定安装的目标到rpmbuild根的某个目录下面,而不是系统的目录。这个目录在install开始之前应当被清空。可以参考其他spec。对于我们来说,就是将Python的库安装到指定的目录,而不是系统的site-packges当中。如果你在build这一步已经打包了wheel,那么使用wheel install命令、指定目标文件夹就可以了。
打包过程,rpm的打包原理非常简单,最开始install的目录是空的,install完成后里面有了一堆文件,那么就按照文件列表将这一堆文件打包、然后指定每个文件将来应当安装到什么位置。对于Python项目来说,一般会安装package名的目录和EGGINFO两个目录,将这两个目录连同里面所有的内容一起加入%files段就可以了。如果你要部署的是某个应用,一般你还会希望将init.d中的启动脚本、或者 systemd的配置文件以及其他应用的配置文件一起部署了,可以在install的过程中将这些文件从源文件目录中复制到目标文件夹里,然后加到files段里面。
安装、卸载脚本。表现为%pre, %post之类的段一般来说如果你有服务要安装的话,需要在这里使用chkconfig, chkconfig on,或者systemd的话就是systemctl enable。如果你希望安装完有个机会修改配置文件,可以选择在首次安装的时候不要启动服务,而在update的时候启动服务,这可以通过脚本传进的第一个命令行参数$1进行判断,0、1、2表示不同的情况(分别是卸载、安装、更新,具体的记不清了),可以参考其他人写的spec;也可以选择安装完永远直接启动,在post中使用service xxx start, 在preuninstall的时候使用service xxx stop。
rpm的功能还是很强大的,除了跟pip共通的功能以外,它有一个显着的好处就是可以帮助你同时管理服务的配置、启动和停止,从而简化部署过程。不过要注意如果使用rpm的话就不要同时使用pip,否则pip更新过的库,rpm卸载或更新时会冲突。
有第三方依赖的时候,一种方法是为每个依赖项写一个独立的spec,里面内容都是上面这样的直接调用setup.py,或者更简单一些,在install的时候直接调用pip就可以;然后在需要这些依赖项的rpm包的spec当中写上Require信息,跟pip体系的requirements差不多。偷懒也可以在同一个rpm中打了一堆Python包进去,但是如果有多个独立安装的rpm都打了同一个Python包,就会冲突,要注意。
其实用习惯了会觉得也不比pip差,需要跟非Python组件混合部署的时候反而会觉得简单了很多。
Ⅲ python多接口有依赖如何调用
方法如下:
1. 对于单接口测试如果依赖接口只需要在测试开始执行一次,那么可以将依赖接口的请求放在类级前置方法中,然后通过全局变量或者当前用例类属性来传递依赖数据。
2. 对于单接口测试如果依赖接口需要在每个用例前执行,那么可以将依赖接口的请求放在方法级前置方法中,然后通过用例对象属性来传递依赖数据
3. 对于多接口的业务流测试,可以将下一个接口需要依赖的数据通过当前用例类属性来传递依赖数据。
Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
Ⅳ python怎么安装依赖库
用安装工具,例如pip 在cmd中输入pip install XXX.
Ⅳ python依赖库libcrypto求助
在Python开发的过程中,经常会遇到各种各样的小问题,比如在一台计算机上调试好的程序,迁移到另外一台机子上后往往会应为工程项目依赖库的缺失而造成错误。
除了一遍又一遍对着被抛出错误去重新install各种相关的依赖库,有没有更好的方法来解决Python开发过程中依赖库的打包呢?答案是肯定的。
类似于JavaScript的npm,Python也有它强大的包管理工具——pip,我们可以用pip导出项目中的dependency:
1 $ pip freeze > requirements.txt
然后通过以下命令来安装dependency:
1 $ pip install -r requirements.txt
经过上述两个步骤,就可以在服务器部署的时候直接安装需要的依赖库,而不用等着报错再去一个一个安装了。
另外,有些小细节也是值得一提的,那就是"pip freeze > requirements.txt"指令必须用在整个工程项目完全跑通了(也就是项目依赖已经全部安装完成)的情况下,才能将所有的有关依赖库写入requirements.txt文件中去,而“pip install -r requirements.txt”指令则使用于服务器部署时较为合适。
Ⅵ 如何打包Python脚本使用的Python库
使用pyinstaller吧
1、下载pyinstaller
目前pyinstaller支持的python版本为2.3-2.7,可以到官网下载。
2、安装
下载完成后,解压即可。
3、pyinstaller使用方法
使用也非常的简单,cmd下进入解压出来的目录,执行如下命令。
python pyinstaller.py [opts] yourprogram.py
主要选项包括:
-F, –onefile 打包成一个exe文件。
-D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。
-c, –console, –nowindowed 使用控制台,无界面(默认)
-w, –windowed, –noconsole 使用窗口,无控制台
Ⅶ 编译安装python需要哪些依赖
依赖库:
//使用apt
安装即可
1.gcc,
make,
zlib1g-dev(压缩/解压缩库)
安装过程需要的库。
2.libbz2-dev
bz2支持库,若在编译安装python前没有安装,将无法通过pip
install
安装提供bz2格式的第三方库,会出现unsupported
archive
format:
.tar.bz2的错误,例如爬虫库Scrapy依赖的Twisted。
3.libsqlite3-dev
sqlite3支持库,若在编译安装python前没有安装,则python中会缺失sqlite3模块,当引入sqlite3或使用依赖sqllite3的第三方库(例如Scrapy)时,会出现ImportError:
No
mol
named
_sqllite3的错误。
//以上为编译安装前需要安装的库,可能不够全面,会不断补充。
4.其他:安装第三方库需要的库
python3-dev,
libxml2-dev,
libxslt1,
libffi-dev,
libssl-dev等,在安装第三方库会有具体说明,不做过多解释。
安装:
//通过wget获取压缩包,这里选择3.6.1版
wget
https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
//解压
tar
xJf
Python-3.6.1.tar.xz
cd
Python-3.6.1
./configure
make
/*这步如果需要sudo,请使用sudo
-H命令,即sudo
-H
make
install,避免pip等模块安装失败。
错误示例(pip安装失败):The
directory
'/home/ls/.cache/pip'
or
its
parent
directory
is
not
owned
by
the
current
user
and
caching
wheels
has
been
disabled.
check
the
permissions
and
owner
of
that
directory.
If
executing
pip
with
sudo,
you
may
want
sudo's
-H
flag.
*/
make
install
Ⅷ python为什么库依赖
库是可以帮你更方便地写python装饰器代码,更重要的是,它让Python中被装饰器装饰后的方法长得更像装饰前的方法。
从库的名称不难看出,这是一个专门用来解决装饰器问题的第三方库。有了它之后,你会惊奇的发现,以后自己定义的装饰器,就再也不需要写嵌套的函数了。
decorator是一个提高装饰器编码效率的第三方库,它适用于对装饰器原理感到困惑的新手,可以让你很轻易的写出更符合人类直觉的代码。
Ⅸ python调用动态库(并且动态库依赖其它动态库)
请问解决了吗?求帮助,四天了还没解决,要被开除了
我的已解决,不知道你情况一不一样,我是python调用一个.c文件,文件里面调用了openssl库的代码,刚开始一直调用不到openssl库的代码,即使include没有报错。
后来把那个.c文件也链接到openssl库的相应.so文件,也就是ldd那个.c文件生成的.so文件的时候,能够看到,依赖了openssl库相应的.so文件,我在linux下需要通过ldconfig “目录”来设备依赖库的目录(目录是openssl库相应的.so文件所在目录(一般是.../lib))
Ⅹ python怎么生成可执行文件
Python是一个脚本语言,被解释器解释执行。它的发布方式:
.py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的)
.pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。
可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,...)。
- pip install pyinstaller
- python setup.py install
- pyinstaller --version
pyinstaller: 打包可执行文件的主要命令,详细用法下面会介绍。
pyi-archive_viewer: 查看可执行包里面的文件列表。
pyi-bindepend: 查看可执行文件依赖的动态库(.so或.dll文件)
pyi-...: 等等。
- pyinstaller [options] script [script ...] | specfile
- pyinstaller mycript.py
- pyinstaller -F mycript.py
- pyi-makespec options script [script ...]
- pyinstaller specfile pyi-build specfile
本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller,其它仅作比较和参考。
Freezing Your Code
各种打包工具的对比如下(来自文章Freezing Your Code):
Solution
Windows
Linux
OS X
Python 3
License
One-file mode
Zipfile import
Eggs
pkg_resources support
bbFreeze yes yes yes no MIT no yes yes yes
py2exe yes no no yes MIT yes yes no no
pyInstaller yes yes yes no GPL yes no yes no
cx_Freeze yes yes yes yes PSF no yes yes no
py2app no no yes yes MIT no yes yes yes
PS.其中pyInstaller和cx_Freeze都是不错的,stackoverflow上也有人建议用cx_Freeze,说是更便捷些。pkg_resources新版的pyInstaller貌似是支持的。
安装PyInstaller
对于那些网络比较稳定,能够流畅使用pip源地址的用户,直接下面的命令就可以搞定:
通常我们会下载源码包,然后进入包目录,执行下面的命令(需要安装setuptools):
安装完后,检查安装成功与否:
安装成功后,就可以使用下面的命令了:
使用PyInstaller
pyinstaller的语法:
最简单的用法,在和myscript.py同目录下执行命令:
然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件。有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:
你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。
当然,pyinstaller还有各种选项,有通用选项,如-d选项用于debug,了解pyInstaller执行的过程;还有一些针对不同平台的选项,具体用法可以访问PyInstaller官方WIKI。
在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项。一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时...一些高级打包选项时,需要手动编辑.spec文件。可以使用:
创建一个.spec文件,对于手动编辑的.spec文件,我们可以使用下面任意一条命令:
PyInstaller的原理简介
PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库。在Linux操作系统下,它主要用的binutil工具包里面的ldd和objmp命令。
PyInstaller输入你指定的的脚本,首先分析脚本所依赖的其他脚本,然后去查找,复制,把所有相关的脚本收集起来,包括Python解析器,然后把这些文件放在一个目录下,或者打包进一个可执行文件里面。
可以直接发布输出的整个文件夹里面的文件,或者生成的可执行文件。你只需要告诉用户,你的应用App是自我包含的,不需要安装其他包,或某个版本的Python,就可以直接运行了。
需要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下。也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。