今天要在没联网的服务器上安装一个python的处理shapefile的库:pyshp,网上查了一下离线安装python库的资料,就把pyshp的压缩包文件下载并上传到服务器上了,结果在执行

python setup.py install

的时候报错:没有setuptools,然后我就走上了艰辛的安装setuptools的道路_(:зゝ∠)_

1. 懵逼状态

一开始我心想,这不简单嘛,和离线安装一个库有什么差别,于是下载了setuptools-20.6.7.tar.gz上传到服务器上解压之后,执行了同样的

python setup.py install

然后看到报错:没有setuptools模块

,我是懵逼的,当时心里就觉得自己蠢哭了_(:зゝ∠)_

2. 查询解决方案

我上网查了一下如何离线安装setuptools。原来是setuptools的压缩包解压之后会有一个 ez_setup.py,setuptools的安装是通过这个文件来实现的,在ez_setup.py文件执行过程中,会去联网下载setuptools的压缩包并自动进行解压以及后续的安装处理,所以网上提到一种方法是将setuptools的压缩包复制到它解压出来的文件夹里,然后执行ez_setup.py。也就是:

a. 解压setuptools-20.6.7.tar.gz压缩包得到一个文件夹,假设名为setuptools-20.6.7

b. 将压缩包setuptools-20.6.7.tar.gz放到解压得到的setuptools-20.6.7文件夹中

c. 在setuptools-20.6.7文件夹中执行python ez_setup.py即可

我安装上述方法试了一下,但是在最后执行ez_setup.py的时候它还是要联网去下载, 并不知道为什么_(:зゝ∠)_

然后又是网上查资料,查原因_(:зゝ∠)_

后来看到另外的一个方法:修改egg(话说这个东西是干什么用的我一直没太明白,好像是存储了一些安装用的文件和信息)的地址:

203 def main(argv, version=DEFAULT_VERSION):

204 """Install or upgrade setuptools and EasyInstall"""

205 try:

206 import setuptools

207 except ImportError:

208 egg = None

209 try:

210 #egg = download_setuptools(version, delay=0)

211 egg="/usr/local/app/setuptools-0.6c11-py2.7.egg"

212 sys.path.insert(0,egg)

213 from setuptools.command.easy_install import main

214 return main(list(argv)+[egg]) # we're done here

215 finally:

216 if egg and os.path.exists(egg):

217 os.unlink(egg)

然后我打开了ez_setup.py,然而它的main函数是长这个样子的:

def main():

"""Install or upgrade setuptools and EasyInstall."""

options = _parse_args()

archive = download_setuptools(**_download_args(options))

return _install(archive, _build_install_args(options))

我当时的内心:

这和说的不一样啊,这都什么鬼啊!

但是之前看到的替换egg地址的那篇文章给我启发:是不是可以将下载好的压缩包传到文件夹里,免去联网下载的环节,直接安装?

我觉得应该可以,于是我就在文件里找了找下载包的代码:

def download_setuptools(

version=DEFAULT_VERSION, download_base=DEFAULT_URL,

to_dir=DEFAULT_SAVE_DIR, delay=15,

downloader_factory=get_best_downloader):

"""

Download setuptools from a specified location and return its filename.

`version` should be a valid setuptools version number that is available

as an sdist for download under the `download_base` URL (which should end

with a '/'). `to_dir` is the directory where the egg will be downloaded.

`delay` is the number of seconds to pause before an actual download

attempt.

``downloader_factory`` should be a function taking no arguments and

returning a function for downloading a URL to a target.

"""

version = _resolve_version(version)

# making sure we use the absolute path

to_dir = os.path.abspath(to_dir)

zip_name = "setuptools-%s.zip" % version

url = download_base + zip_name

saveto = os.path.join(to_dir, zip_name)

if not os.path.exists(saveto): # Avoid repeated downloads

log.warn("Downloading %s", url)

downloader = downloader_factory()

downloader(url, saveto)

return os.path.realpath(saveto)

它长这个样子,可以看出:version应该是分析需要下载的版本,to_dir应该是下载后的存放目录,zip_name应该是压缩包的名字,url应该是压缩包所在的位置,saveto应该是压缩包下载后的路径名。经过修改源码输出得到saveto的值之后(又是一段曲折坎坷的经历_(:зゝ∠)_),发现值就是当前文件夹,但是明明我已经上传了压缩包,为什么还要联网下载?!为什么,你怎么这么执着于联网?

后来又静下来仔细比对了一下路径,才发现问题所在:原来ez_setup.py联网下载的那个压缩包是.zip的文件,而我下载传到路径下的是tar.gz的文件!

是在下输了!现在终于有了解决办法:

1. 现在本机浏览器上输入url即下载得到相应版本的zip文件

2. 将zip压缩包上传到ez_setup.py所在的文件夹下

3. 将ez_setup.py中的函数download setuptools函数中的

version = _resolve_version(version)这一句注释掉,因为在_resolve_version函数中需要联网获取最新版本信息,此处因为是自己下载好的压缩包,所以不需要这个信息

4. 将zip_name改为相应的zip压缩包的名字,此处应该不能将其改为.tar.gz,因为后来是调用的zip库中的函数解压,所以改为tar.gz虽然可以通过下载阶段,但是在安装解压的时候可能会出问题

5. 执行ez_setup.py即可

看见setuptools安装完成的界面真的内心激动万分_(:зゝ∠)_ 不枉我没吃早饭地折腾了一早上

python 离线安装setuptools_离线安装setuptools相关推荐

  1. python怎么安装setuptools_如何安装setuptools?

    我正在尝试安装安装工具.当我运行"sh setuptools-0.6c9-py2.4.egg"时,会收到以下消息:Permission denied: '/usr/lib/pyth ...

  2. python怎么安装pyinstaller_Python离线安装PyInstaller

    PyInstaller--Python的打包工具 一.简单介绍 可以将python程序打包成一个独立的执行文件. pyinstaller 执行完毕后,源文件所在目录将生成dist和build两个文件夹 ...

  3. python模块离线安装_离线安装db2的python模块ibm_db

    1.为什么要离线安装 没网,在银行工作,服务器环境配置,完全离线(本来五分钟搞定的事情,非要搞一天.我服!!) 2.安装步骤 视情况而定. 3.一个下载db2的client包,官网下载http://w ...

  4. python怎么pip离线下载_pip下载保存Python包,pip离线安装

    20180903 - Python Pip 工具下载whl包与离线安装 20180903 - Python Pip 工具下载whl包与离线安装 1. 我的Blog 博客园 https://www.cn ...

  5. 批处理一键安装所有离线的Python库

    一.应用背景 由于一些电脑不存在联网环境,需要先在联网的电脑中下载好离线的Python库安装包1,通常是whl或者zip格式,然后将资源文件拷贝到不联网的电脑,用离线安装包的格式进行安装. 有的库安装 ...

  6. python 编译器spyder 安装_离线安装spyder的Python环境

    一.介绍:要求在不联网.无法使用anaconda的情况下,在一台离线的win7设备上配置Spyder的python的开发环境,用于提高数据处理效率,且安装方法在win7 32位和64位的各种设备上均可 ...

  7. python安装包的离线安装方法

    说明:python的离线安装有时候,由于不同模块有很多依赖包,所以很容易出错.python在线安装只需要"pip install 包名"会自动安装依赖包,所以一般不会出现安装问题. ...

  8. python安装setuptools_安装setuptools和pip

    安装setuptools 下载setuptools源码setuptools-25.2.0.tar.gz 这是一个压缩文件,将其解压到桌面,并进入该文件夹 按住shift键后,在文件夹空白处点击鼠标右键 ...

  9. Airflow的安装:在线安装、离线安装、问题汇总

    Airflow的安装:在线安装.离线安装.常见问题汇总 文章目录 Airflow的安装:在线安装.离线安装.常见问题汇总 前言 理想的安装过程 安装总结 实际的安装过程 python的安装 步骤1:获 ...

  10. linux kafka离线安装,centos 离线安装confluent_kafka 模块

    centos 离线安装confluent_kafka 模块 背景:需要安装Python模块的机子不能上网,只能下载源码进行安装 说明:如果可以上网直接pip install confluent_kaf ...

最新文章

  1. 友盟分享和cocos2dx符合重复duplicate symbol 解决方案
  2. mybatis调用oracle存储过程
  3. usaco dec 2012 first!
  4. abb变频器电机过热保护怎么复位_变频器驱动的电机过热该怎么办
  5. 京东宣布收购拇指阅读,具体金额未披露
  6. Vue2 MVVM 双向绑定(数据劫持+发布者-订阅者模式)
  7. 仰望星空后,更将脚踏实地!
  8. 使用vagrant因用户权限导致文件不可写问题的解决
  9. ESP8266 MQTT
  10. sql中如何将视图中某一字段相同的数据合并 不同内容的字段相加_Tableau基础如何合并你的数据?理解与逻辑(上)...
  11. 【Qt开发】关于QWSServer
  12. 【C语言】17-预处理指令3-文件包含
  13. mt4怎么用云服务器跟单,免费好用的跟单系统 神速MT4跟单ea系统使用教程
  14. 数据结构习题及解析二
  15. Dell服务器管理工具Dell OpenManager Server Administrator的安装
  16. android获取电池信息;android获取电池容量、技术、电压、电量、温度等信息
  17. deepin 切换大黄蜂显卡驱动
  18. sendgrid html text,在Node.js中的SendGrid的“发件人”字段中添加名称
  19. 训练模型时候显存爆炸的一种可能性以及解决办法
  20. 3-2Virsh控制工具

热门文章

  1. Free Launch Bar
  2. Tinkpad笔记本双击开发Q盘不再提示创建恢复介质的对话框了,而且进入磁盘后文件夹是空的!
  3. 计算机怎么硬盘重做系统,如何对新的硬盘安装系统进行分区并重新安装系统计算机分区教程...
  4. oracle+linux+oel+6.9,Oracle 11g(11.2.0.4) install on OEL6.7
  5. STM32片上Flash读写的一些重要知识
  6. #Unity _ 简体转繁体
  7. [Unity]Unity3D游戏引擎游戏开发软件相比与其他的优势
  8. 微信公众号与小程序对接文档
  9. WPF中资源字典引用出错
  10. 非接触物体尺寸形态测量(G题)