setup.py : python环境/包的构建工具 在安装python的相关模块和库时,我们一般使用“pip install 模块名”或者“python setup.py install”,前者是在线安装 但是在如下场景下,使用python setup.py install会更适合需求: 在编写相关系统时,python 如何实现连同依赖包一起打包发布? 为什么要用setup.py 一般的通用包,我们可以直接用pip install 但是如果是我们自己写的包呢?本地写好了如何发布到服务器端呢? 这时可以采用setup.py去构建环境,将自己写的模块以及相应的依赖库一起打包,用setup去完成这个任务。 所以很多github代码都提供setup.py方便我们一键安装。 怎么使用setup.py 在使用github上的FasterRCNN代码时,便要先构建环境 python setup.py build develop
而python项目中常见的setup.py其实也是在执行类似的构建的功能,通过setup.py文件可以将python包按照指定的方案进行构建,构建出来的可执行文件是一个egg文件。 项目示例 首先我们构造一个大概的目录结构,项目的路径如下所示: [dechin@dechin-manjaro test_setup]$ tree . ├── requirements.txt ├── setup.py 而setup.py就是我们这里的安装文件,在后面的章节中会着重提到。最后是我们的项目的核心路径ts,里面包含了我们的核心代码。 python3 setup.py install指令来进行安装: [dechin@dechin-manjaro test_setup]$ python3 setup.py install running 这里我们介绍了如何用setup.py文件来完善一个最简单的python项目,这也是每一个python开源项目所必须要具备的条件。
python setup.py 浅析 setuptools.setup() 参数说明 packages 对于所有 packages 列表里提到的纯 Python 模块做处理 需要在 setup 脚本里有一个包名到目录的映射 cmdclass 定制化命令,通过继承 setuptools.command 下的命令类来进行定制化 class UploadCommand(Command): """Support setup.py # $ setup.py publish support. $', '', sys.argv[0]) sys.exit(cli()) 此时,可以直接运行 >>> legit setup.py 分析 #! 最终会在 bin/ 下生成 legit 可执行 py 文件,调用制定的函数 setup.py 实例分析 kennethreitz/setup.py #!
三、如何使用setuptools工具 setuptools的工具使用重点在于setup.py文件的编写。 1. 如何编写setup.py文件 1.1 setup.py的参数介绍 name : 打包起来的包的文件名 version : 版本号,添加为打包文件的后缀名 author : 作者 author_email setup.py 编写的官方文档:https://docs.python.org/2/distutils/setupscript.html
在对 snek.py 这个 Python 文件打包时,需要一个重要的文件:setup.py 。setup.py 文件含有 这个 Python 包的名称、开发者是谁、还依赖哪些软件等。 setup.py 中还有一个重要的功能:它可以用于注册 entry_points 。后面会用代码来解释 entry_points 到底是干嘛的。 如果其他的包在 setup.py 中定义了叫 "snek_types" 的 entry_points ,将会在 snek 运行时动态加载进来。 --- a/setup.py +++ b/setup.py @@ -6,5 +6,9 @@ setup( 'console_scripts': [ 'snek ,用 python setup.py develop 方式,将源代码打包安装到当前系统内。
简单来说就是把安装的bin目录加入普通用户或者root用户的环境变量path 一、安装node-gyp
如何使用setup.py安装github开源库 前言 最近在github上看到许多库并没有加入conda或者pip,无法直接安装,那么我们使用其中一个示例如何安装它们 best_tracks 由miniufo 大神开发的多种台风路径数据读取接口库 安装教程如图 那么我们照做 然后我回到Python环境中发现并没有安装 这说明不靠谱哇 然后想起作者应该是默认我们都知道要使用setup.py文件 setup.py 使用 在cmd中cd到你下载的Python库文件夹中(我们之前git那一步只是下载) 输入以下指令 python setup.py install 看起来安装成功了 去jupyter测试一下 你学会了吗
除此以外还将讨论设置文件(即 setup.cfg 和 setup.py)的用途以及如何将它们与需求文件一起使用,这样可以使包开发和重新分发的过程变得更容易。 项目的元数据等信息需要 在setup.py 文件中定义,例如下面的demo: from setuptools import setup setup( name='demo', 我们需要 requirements.txt 和 setup.py/setup.cfg 文件吗? 这就需要分情况对待了。 ) 如果包仅在单机开发,但是需要把他作为pip的包发布到pypi上,那么 setup.py/setup.cfg 就足够了。 以下是Python文档中官方的定义: install_requires(即 setup.py)定义了单个项目的依赖关系,而requirements.txt 通常用于定义完整 Python 环境。
. ├── requirements.txt ├── setup.py └── ts └── __init__.py 1 directory, 3 files 在一个名为test_setup的路径下 而setup.py就是我们这里的安装文件,在后面的章节中会着重提到。最后是我们的项目的核心路径ts,里面包含了我们的核心代码。 执行安装 按照上述的方法对我们的python项目进行编写后,无损音乐就可以开始执行构建,如果需要测试编译可以先运行python3 setup.py build来进行测试,在安装成功后再执行install 指令,当然我们也可以直接一步执行python3 setup.py install指令来进行安装: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 这里我们介绍了如何用setup.py文件来完善一个最简单的python项目,这也是每一个python开源项目所必须要具备的条件。
但是当一个项目选择使用setuptools时,像setup.py这样的可执行文件的使用就成了一个问题。你无法在不知道setup.py文件依赖关系的条件下执行它。 可是,目前还没有标准的方法,在不执行存储着依赖信息的setup.py文件的情况下,自动地了解它具体有哪些依赖项。 此解决方案有许多问题,例如: 除了setuptools本身,没有工具可以在不执行setup.py的情况下访问这些信息,但是如果不安装这些项目,setup.py将无法执行。 setup_requires中列出的项目只要执行setup.py就会被安装,但执行setup.py的常见方式是通过另一个工具,比如已经负责管理依赖关系的pip。 例如,源代码签出到wheel,同时不落入setup.py所形成的悖论中。即,工具无法推断项目需要自行构建的东西。
│ ├── __init__.py │ ├── run.py │ └── trainer │ ├── __init__.py │ └── train.py └── setup.py setup.py如下 from setuptools import setup, find_packages setup( name="myapp", # you should change install_requires=["torch>=1.4"], packages=find_packages(), include_package_data=True, ) 我们运行如下命令 python setup.py myapp.egg-info │ ├── dependency_links.txt │ ├── PKG-INFO │ ├── SOURCES.txt │ └── top_level.txt └── setup.py 现在我们重新执行打包命令 python setup.py sdist bdist_wheel 这个时候所有yaml文件也成功打包好了 myapp/ ├── build │ ├── bdist.linux-x86
## 卸载 numpy easy_install -m numpy 3. setup.py 方法 在安装前记录好安装的细节,以便日后卸载。 ## 记录安装日志 # 安装 numpy python3 setup.py install --record install.log ## 卸载的时候使用日志文件 install.log cat install.log
编写setup.py文件,获取帮助:python setup.py --help-commands[python] Standard commands: build build setup.py示例: from setuptools import setup setup(name='xxx',version='0.1.1') 打包命令:python setup.py sdist scripts选项隐含的python源文件 2)所有在ext_modules选项中列出的C源文件 3)符合test/test*.py模式的文件 4)README、README.txt、setup.py 另外,他还可能会安装在setup.py中的install_requires定义的相关模块,例如: install_requires=['...','...']删除一个包:1)删除这个包所创建的文件, develop python setup.py develop -u 使用该方式比其他方式安装包更好一些5.创建一个新命令:这是由setuptools引入的,是一种将包定义为插件的简单方法,
52740227 easy_install 与 pip.exe install http://blog.csdn.net/xxzhangx/article/details/52337349 这次要说的是用setup.py 步骤如下: 步骤:setup.py 先下载你要安装的包,并解压到磁盘下; 进入到该文件的setup.py 目录下 ,打开cmd,并切换到该目录下; 先执行 python setup.py build 然后执行 python setup.py install 回过头去官网看,下载方式都有说明,长久以来竟然没发现。
一、构建工具setup.py的应用场景在安装python的相关模块和库时,我们一般使用“pip install 模块名”或者“python setup.py install”,前者是在线安装,会安装该包的相关依赖包 但是在如下场景下,使用python setup.py install会更适合需求:在编写相关系统时,python 如何实现连同依赖包一起打包发布? 在这种应用场景下,pip工具似乎派不上了用场,只能使用python的构建工具setup.py了,使用此构建工具可以实现上述应用场景需求,只需在 setup.py 文件中写明依赖的库和版本,然后到目标机器上使用 python setup.py install安装。 参考文献:python安装模块如何通过setup.py安装(超简单)使用setup.py安装python包和卸载python包的方法python下setuptools的安装详解及No module named
linux-gnu-gcc' failed with exit status 1 ---------------------------------------- Command "python setup.py
python setup.py egg_info failed with error code 1 解决方法 更新 setuptools 与 pip。
该问题是由于Win32 API限制引起的问题, 通过修改注册表的值可以解决该问题:
项目来作为例子,我项目结构如下: -django-tctip │ .gitignore │ LICENSE │ MANIFEST.in │ README.md │ setup.py setup.py 文件简介 其实真正需要打包一个 Python 包只需要在项目根目录中提供一个 setup.py 文件即可,这个文件简单的内容如下: from setuptools import find_packages 因为 setup.py 执行打包的时候默认只会打包 Python 包,这是一个什么概念呢,就是只会打包带有 __init__.py 的目录文件,也就是必须是包,于是问题就来了,比如我的项目里面的静态文件目录 打包上传 写好 setup.py 文件和 MANIFEST.in 文件之后,就可以执行打包命令,然后确认打包没有问题即可上传到 PyPI。 也就是说,如果你在上传到 PyPI 之前就执行 python setup.py sdist bdist_wheel 打包,那么会同时得到一个 tar.gz 和一个 whl 的包,这个时候使用 pip install
问题场景:安装torchsparse时候执行python setup.py install 报错: /usr/include/linux/types.h:12:27: error: expected initializer types.h文件定位到12行注释改行代码 //typedef __signed__ __int128 __s128 __attribute__((aligned(16))); 之后重新编译python setup.py