当我“像 shell 脚本一样”运行 setuptools .egg 时,实际发生了什么?

2023-12-08

来自阅读本文档,我已经建立了一个关于命令内容的心理模型sh setuptools-0.6c11-py2.7.egg实际上确实如此,但它非常不完整,我仍然对某些方面感到困惑。

我的思维模型是这样的:

  1. 当发出这个命令时,egg(我认为它是一种巧妙处理依赖关系的 zip 文件)以某种方式在我的系统上找到正确的 python 版本,并使用该 python 将其“安装”到适当的位置。
  2. 实际上,这意味着在我的路径上的目录中创建了一个名为 easy_install 的“Unix 可执行文件”。这就是为什么我只能输入easy_install somepackage之后在终端中。

因此我的问题是:

  1. “蛋”怎么能以这种方式“自我安装”呢?当其他鸡蛋需要 easy_install 才能工作时,为什么这对这个鸡蛋特别有效?
  2. 这样创建的“Unix 可执行文件”大小为 4kb。到底是什么?是否充满了对其他事物的调用?他们在哪里?

这不是一个“如何让它工作”的问题——我在这个轴上没有遇到任何问题,但我想完全了解这里发生的事情。


Egg 文件只是 zip 压缩的目录,包含 Python 包、模块和一些元数据,带有.egg扩大。

zip格式灵活;它将忽略文件开头的任何内容isn'tzip 文件的一部分。通过查找一系列字符 (PK以及另外两个字节指示类型)并从那里读取。

这意味着你可以放一些东西in front拉链的。这setuptoolsEggs 的特殊之处在于它们使用这个技巧在 zip 数据之前插入一些 shell 脚本:

$ head -n8 setuptools-0.6c11-py2.7.egg 
#!/bin/sh
if [ `basename $0` = "setuptools-0.6c11-py2.7.egg" ]
then exec python2.7 -c "import sys, os; sys.path.insert(0, os.path.abspath('$0')); from setuptools.command.easy_install import bootstrap; sys.exit(bootstrap())" "$@"
else
  echo $0 is not the correct name for this egg file.
  echo Please rename it back to setuptools-0.6c11-py2.7.egg and try again.
  exec false
fi

经过前 8 行,这是一个真正的 zip:

$ tail -n+9 setuptools-0.6c11-py2.7.egg | file -
/dev/stdin: Zip archive data, at least v2.0 to extract

前 8 行中包含的脚本是运行时正在执行的脚本sh setuptools-0.6c11-py2.7.egg.

正如你所看到的,该脚本是针对egg版本的;这在Python 2.7的版本中,它只是使用Python解释器将这个egg添加到Python搜索路径中。然后它从包含的 python 模块导入一个函数并运行它。

以下是 Egg 本身的内容,正如我提到的,这只是一个 zip 存档:

$ zipinfo -l setuptools-0.6c11-py2.7.egg 
Archive:  setuptools-0.6c11-py2.7.egg   332005 bytes   78 files
-rw-rw-r--  2.0 unx     1713 b-      995 defN  7-Jul-10 20:26 site.pyc
-rw-rw-r--  2.0 unx    90113 b-    31461 defN  7-Jul-10 20:26 pkg_resources.pyc
-rw-rw-r--  2.0 unx    85435 b-    23537 defN 19-Oct-09 13:35 pkg_resources.py
-rw-rw-r--  2.0 unx     2362 b-      875 defN 20-Sep-06 17:05 site.py
-rw-rw-r--  2.0 unx      309 b-      224 defN  7-Jul-10 20:26 easy_install.pyc
-rw-rw-r--  2.0 unx      126 b-      105 defN 20-Sep-06 17:05 easy_install.py
-rw-rw-r--  2.0 unx       43 b-       43 defN  7-Jul-10 20:26 EGG-INFO/top_level.txt
-rw-rw-r--  2.0 unx     1591 b-      458 defN  7-Jul-10 20:26 EGG-INFO/SOURCES.txt
-rw-rw-r--  2.0 unx        1 b-        3 defN 20-Oct-09 10:07 EGG-INFO/zip-safe
-rw-rw-r--  2.0 unx     9278 b-     3194 defN  7-Jul-10 20:26 EGG-INFO/PKG-INFO
-rwxrwxr-x  2.0 unx     2504 b-      623 defN  7-Jul-10 20:26 EGG-INFO/entry_points.txt
-rw-rw-r--  2.0 unx        1 b-        3 defN  7-Jul-10 20:26 EGG-INFO/dependency_links.txt
-rw-rw-r--  2.0 unx     1567 b-      791 defN  7-Jul-10 20:26 setuptools/extension.pyc
-rw-rw-r--  2.0 unx     1089 b-      424 defN 20-Sep-06 17:05 setuptools/extension.py
-rw-rw-r--  2.0 unx    10796 b-     4050 defN  7-Jul-10 20:26 setuptools/sandbox.pyc
-rw-rw-r--  2.0 unx     8227 b-     2309 defN  6-Jul-10 20:09 setuptools/sandbox.py
-rw-rw-r--  2.0 unx     5677 b-     2499 defN  7-Jul-10 20:26 setuptools/archive_util.pyc
-rw-rw-r--  2.0 unx    26800 b-    11228 defN  7-Jul-10 20:26 setuptools/package_index.pyc
-rw-rw-r--  2.0 unx     6209 b-     2229 defN 19-Oct-09 13:35 setuptools/depends.py
-rw-rw-r--  2.0 unx     6677 b-     3096 defN  7-Jul-10 20:26 setuptools/depends.pyc
-rw-rw-r--  2.0 unx     2816 b-     1159 defN  6-Jul-10 20:09 setuptools/__init__.py
-rw-rw-r--  2.0 unx     3639 b-     1837 defN  7-Jul-10 20:26 setuptools/__init__.pyc
-rw-rw-r--  2.0 unx     5924 b-     1777 defN 19-Oct-09 13:35 setuptools/archive_util.py
-rw-rw-r--  2.0 unx    29972 b-     8156 defN 19-Oct-09 13:35 setuptools/dist.py
-rwxrwxr-x  2.0 unx     7168 b-     3249 defN 19-Oct-09 17:18 setuptools/cli.exe
-rw-rw-r--  2.0 unx    28275 b-     8698 defN  6-Jul-10 20:09 setuptools/package_index.py
-rw-rw-r--  2.0 unx    29786 b-    10953 defN  7-Jul-10 20:26 setuptools/dist.pyc
-rwxrwxr-x  2.0 unx     7168 b-     3244 defN 19-Oct-09 17:18 setuptools/gui.exe
-rw-rw-r--  2.0 unx    22219 b-     7042 defN  7-Jul-10 20:26 setuptools/tests/test_resources.pyc
-rw-rw-r--  2.0 unx    19388 b-     4723 defN 24-Sep-08 13:10 setuptools/tests/test_resources.py
-rw-rw-r--  2.0 unx    12345 b-     2765 defN 24-Sep-08 13:10 setuptools/tests/__init__.py
-rw-rw-r--  2.0 unx    13811 b-     4523 defN  7-Jul-10 20:26 setuptools/tests/__init__.pyc
-rw-rw-r--  2.0 unx     1499 b-      708 defN  7-Jul-10 20:26 setuptools/tests/test_packageindex.pyc
-rw-rw-r--  2.0 unx    81351 b-    27171 defN  7-Jul-10 20:26 setuptools/tests/doctest.pyc
-rw-rw-r--  2.0 unx      759 b-      346 defN 24-Sep-08 13:10 setuptools/tests/test_packageindex.py
-rw-rw-r--  2.0 unx    99714 b-    25663 defN 20-Sep-06 17:05 setuptools/tests/doctest.py
-rw-rw-r--  2.0 unx     2866 b-     1332 defN  7-Jul-10 20:26 setuptools/command/rotate.pyc
-rw-rw-r--  2.0 unx    11520 b-     3127 defN 19-Oct-09 13:35 setuptools/command/build_ext.py
-rw-rw-r--  2.0 unx     6649 b-     2208 defN 24-Sep-08 13:10 setuptools/command/upload.py
-rw-rw-r--  2.0 unx     8162 b-     3538 defN  7-Jul-10 20:26 setuptools/command/sdist.pyc
-rw-rw-r--  2.0 unx     5965 b-     2421 defN  7-Jul-10 20:26 setuptools/command/setopt.pyc
-rw-rw-r--  2.0 unx     2283 b-      695 defN 19-Oct-09 17:50 setuptools/command/bdist_wininst.py
-rw-rw-r--  2.0 unx     7535 b-     3208 defN  7-Jul-10 20:26 setuptools/command/build_py.pyc
-rw-rw-r--  2.0 unx     3690 b-     1528 defN  7-Jul-10 20:26 setuptools/command/install.pyc
-rw-rw-r--  2.0 unx    14205 b-     4465 defN 19-Oct-09 13:35 setuptools/command/egg_info.py
-rw-rw-r--  2.0 unx      626 b-      311 defN 28-Dec-06 19:52 setuptools/command/__init__.py
-rw-rw-r--  2.0 unx      839 b-      494 defN  7-Jul-10 20:26 setuptools/command/__init__.pyc
-rw-rw-r--  2.0 unx     5053 b-     1519 defN 20-Sep-06 17:05 setuptools/command/setopt.py
-rw-rw-r--  2.0 unx      674 b-      329 defN  7-Jul-10 20:26 setuptools/command/register.pyc
-rw-rw-r--  2.0 unx     3724 b-     1292 defN  4-Sep-07 00:11 setuptools/command/install_egg_info.py
-rw-rw-r--  2.0 unx    18005 b-     5444 defN 19-Oct-09 13:35 setuptools/command/bdist_egg.py
-rw-rw-r--  2.0 unx     3984 b-     1385 defN 15-Feb-08 12:29 setuptools/command/install.py
-rw-rw-r--  2.0 unx     2356 b-     1002 defN  7-Jul-10 20:26 setuptools/command/bdist_wininst.pyc
-rw-rw-r--  2.0 unx     2025 b-      774 defN 22-May-07 17:55 setuptools/command/bdist_rpm.py
-rw-rw-r--  2.0 unx     2486 b-      871 defN 20-Sep-06 17:05 setuptools/command/install_lib.py
-rw-rw-r--  2.0 unx      740 b-      357 defN 20-Sep-06 17:05 setuptools/command/saveopts.py
-rw-rw-r--  2.0 unx    56980 b-    23198 defN  7-Jul-10 20:26 setuptools/command/easy_install.pyc
-rw-rw-r--  2.0 unx     3172 b-     1438 defN  7-Jul-10 20:26 setuptools/command/install_lib.pyc
-rw-rw-r--  2.0 unx     2257 b-     1013 defN  7-Jul-10 20:26 setuptools/command/bdist_rpm.pyc
-rw-rw-r--  2.0 unx     5310 b-     1732 defN 15-Feb-08 12:29 setuptools/command/develop.py
-rw-rw-r--  2.0 unx     5091 b-     2222 defN  7-Jul-10 20:26 setuptools/command/test.pyc
-rw-rw-r--  2.0 unx    63580 b-    17507 defN 19-Oct-09 13:35 setuptools/command/easy_install.py
-rw-rw-r--  2.0 unx    16467 b-     6544 defN  7-Jul-10 20:26 setuptools/command/egg_info.pyc
-rw-rw-r--  2.0 unx     4577 b-     1994 defN  7-Jul-10 20:26 setuptools/command/install_egg_info.pyc
-rw-rw-r--  2.0 unx     6275 b-     3108 defN  7-Jul-10 20:26 setuptools/command/upload.pyc
-rw-rw-r--  2.0 unx     7246 b-     2237 defN 20-Sep-06 17:05 setuptools/command/build_py.py
-rw-rw-r--  2.0 unx    10073 b-     4314 defN  7-Jul-10 20:26 setuptools/command/build_ext.pyc
-rw-rw-r--  2.0 unx     3185 b-     1463 defN  7-Jul-10 20:26 setuptools/command/alias.pyc
-rw-rw-r--  2.0 unx     1921 b-      704 defN 15-Feb-08 12:29 setuptools/command/install_scripts.py
-rw-rw-r--  2.0 unx     7327 b-     2380 defN 19-Oct-09 15:46 setuptools/command/sdist.py
-rw-rw-r--  2.0 unx     1249 b-      647 defN  7-Jul-10 20:26 setuptools/command/saveopts.pyc
-rw-rw-r--  2.0 unx     2021 b-      750 defN 20-Sep-06 17:05 setuptools/command/rotate.py
-rw-rw-r--  2.0 unx     2477 b-      848 defN 19-Oct-09 13:35 setuptools/command/alias.py
-rw-rw-r--  2.0 unx    17695 b-     7800 defN  7-Jul-10 20:26 setuptools/command/bdist_egg.pyc
-rw-rw-r--  2.0 unx      277 b-      158 defN 20-Sep-06 17:05 setuptools/command/register.py
-rw-rw-r--  2.0 unx     4442 b-     1424 defN 15-Feb-08 12:29 setuptools/command/test.py
-rw-rw-r--  2.0 unx     2445 b-     1160 defN  7-Jul-10 20:26 setuptools/command/install_scripts.pyc
-rw-rw-r--  2.0 unx     5175 b-     2317 defN  7-Jul-10 20:26 setuptools/command/develop.pyc
78 files, 958981 bytes uncompressed, 321419 bytes compressed:  66.5%
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我“像 shell 脚本一样”运行 setuptools .egg 时,实际发生了什么? 的相关文章

  • Pandas groupby:根据另一列中的值更改一列中的值

    我会尽力解释我的问题 但我是 Pandas 新手 所以请耐心等待 我有一个 Pandas 数据框df Random ID Seq ID Type Seq Token 0 8 1 User First 1 8 2 Agent Second 2
  • PyTorch 如何计算二阶雅可比行列式?

    我有一个正在计算向量的神经网络u 我想计算关于输入的一阶和二阶雅可比矩阵x 单个元素 有人知道如何在 PyTorch 中做到这一点吗 下面是我项目中的代码片段 import torch import torch nn as nn class
  • 加快 pandas groupby 中的滚动总和计算

    我想按组计算大量组的滚动总和 但我很难快速地完成它 Pandas 内置了滚动和展开计算器的方法 这是一个例子 import pandas as pd import numpy as np obs per g 20 g 10000 obs g
  • Pycharm 出现 Kivy 错误 [严重] [应用程序] 无法获取窗口,中止

    我正在尝试让示例 Kivy 代码之一在我的机器上运行 我使用的是 Pycharm 社区版 2017 1 安装了 anaconda python 2 7 和 Kivy 1 9 我已使用项目设置将 Kivy 模块和 Pygame 模块安装到项目
  • 为什么del是Python中的指令而不是方法? [复制]

    这个问题在这里已经有答案了 为什么Python的创建者更喜欢这种语法 指令 del list index 超过这个 方法 list del index 在我看来 这del属于同一 类别 append remove find ETC 因此应该
  • 到底什么是序列?

    蟒蛇docs https docs python org 3 glossary html term sequence有点模棱两可 sequence 一个可迭代对象 支持通过以下方式使用整数索引进行有效的元素访问 getitem 特殊方法并定
  • Panda如何将行分组到不同的时间桶中?

    我有一个带有名为时间戳的日期时间类型列的数据帧 我想根据时间部分的时间戳将数据帧拆分为多个数据帧 每个数据帧包含按其值模 x 分钟进行值的行 其中 x 是变量 请注意e and f不按原来的顺序 以 10 分钟为模 我希望所有时间都以3在一
  • Scrapy规则如何与爬行蜘蛛一起工作

    我很难理解 scrapy 爬行蜘蛛规则 我有一个例子 它并不像我希望的那样工作 所以它可能是两件事 我不明白规则是如何运作的 我形成了不正确的正则表达式 导致我无法获得所需的结果 好吧 这就是我想做的 我想编写爬行蜘蛛 它将获取所有可用的统
  • 访问具有动态名称的变量的值

    我发现了几个主题 其中讨论了在循环中动态创建单个变量是不好的做法 最好使用字典 就我而言 我不需要动态创建它们 我想要access他们在循环中 我不想用字典对于他们来说 因为这些变量在代码中的很多地方使用 并且只有一个地方我需要这种动态访问
  • 确定 TCP Listen() 队列中当前积压的连接数

    有没有办法找出currentLinux 上 TCP 套接字上等待 Accept 的连接尝试次数 我想我可以在每个事件循环上点击 EWOULDBLOCK 之前计算成功的 Accept 数量 但我使用的是隐藏这些细节的高级库 Python Tw
  • 使用 Python 访问 MP3 音乐数据

    我正在尝试编写一个 Python 脚本 用于使用歌曲的数据作为比较的基础来搜索重复的 mp3 4 文件 我的情况涉及许多文件名相似但 ID3 标签不同的 mp3 4 文件 起初 我尝试循环并使用 md5 来查找重复文件 忽略文件名 当然 当
  • 如何获取 Flask 中当前的基本 URI? [复制]

    这个问题在这里已经有答案了 在下面的代码中 我想将 URL 存储在变量中以检查发生 URL 错误的错误 app route flights methods GET def get flight flight data mongo db fl
  • 保持 WebSocket 连接处于活动状态

    我正在研究 WebSocket 协议 并尝试在后端使用 Python 实现一个简单的 ECHO 服务 它似乎工作正常 但连接建立后立即断开 这是我的客户
  • 包含文件中的块未被扩展模板填充

    我有一个如下所示的模板 include base top html with context include base nav html with context div Stuff block content endblock div i
  • 合法 .xlsx 文件上的 openpyxl load_workbook() 会导致 zipfile.BadZipFile 错误

    我试图做的是将数据帧数据附加到现有的合法 Excel 文件中 我使用了 openpyxl 中的 load workbook 函数 但它系统地返回错误 这是一些在我的机器上崩溃的代码 from openpyxl import load wor
  • python 格式日期时间,带有“st”、“nd”、“rd”、“th”(英文序数后缀),如 PHP 的“S”

    我想要一个 python datetime 对象来输出 并在 django 中使用结果 如下所示 Thu the 2nd at 4 30 但我在python中找不到输出的方法st nd rd or th就像我可以使用 PHP 日期时间格式一
  • 将人员分配到床位 - 自动化方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我每年都会帮助举办青年营 将与会者分配到卧室是一项艰巨的任务 有 92 个卧室 活动持续一周 与会者停留的时间长短不一 而且床需要重复
  • Django MySQL 创建表时出错

    我有一个类似的问题这张票 https code djangoproject com ticket 18256在 Django 论坛上提出 我该如何解决这个问题 我还扩展了一个用户模型 如下所示 class Profile models Mo
  • 阅读 setup.py 中的 README

    所以 我想要long description我的设置脚本的内容是我的README md文件 但是当我这样做时 源代码发行版的安装将失败 因为python setup py sdist不复制自述文件 有没有办法让distutils core
  • Bokeh 中的相关图问题

    当我通过绘制数据时rect 来自 Bokeh 我在可视化中得到了一条由水平块组成的单行 数据打印正确 据我所知格式正确 type 验证它们都是列表 谁能诊断这个吗 如果问题不在这里 那么我可以附加更多代码 如果需要 在 Ubuntu 14

随机推荐

  • 为什么朴素素性测试算法不是多项式

    我想了解为什么以下朴素素性测试算法不是多项式 IsPrime n an integer Begin For i 2 to n 1 do If n i 0 then return no EndIf EndFor return yes End
  • 如何在 iOS 7 上以兼容模式调试应用程序?

    所以 iOS 7发布了 我们很多用户已经升级了 尽管我们官方不支持iOS 7 并要求大家不要升级 目前该应用程序以兼容模式运行 我们的用户报告了很多问题 问题是我不知道如何在兼容模式下调试 所以其中一些问题确实很难修复 我尝试用谷歌搜索它
  • Android JNI 从 Java 类获取两个字段

    在发布任何代码或任何内容之前 让我解释一下我要实现的目标 我想做的是从资产文件夹中获取加载着色器 并传递一组PongDroidShader对象转换为 C 以便它可以编译和加载它们 在我的 Java 类中 我有一个函数 它会遍历着色器文件夹中
  • 使用 SQL Server LIKE 模式搜索“全字匹配”

    有谁有LIKE仅匹配整个单词的模式 它需要将空格 标点符号和字符串的开头 结尾考虑为单词边界 我没有使用 SQL 全文搜索 因为它不可用 我认为在以下情况下没有必要进行简单的关键字搜索LIKE应该能够做到这一点 但是 如果有人测试过全文搜索
  • Haskell:更快的素数求和

    免责声明 我正在研究欧拉问题 9 我正在将一些相当大的数字相加 所有从 1 到 2 000 000 的素数 对这些素数求和需要很长时间 我正在使用 haskell 内置函数 sum as in sum listOfPrimes 还有其他更快
  • 具有相同 nuget 包的项目引用不同版本的程序集

    我快要疯了 我希望这是我忽略的事情 我正在经历间歇性的FileLoadExceptions 即使代码在部署之间发生变化 它们也会在部署后显示不更改任何程序集引用 看看最近的例子 我看到了FileLoadException due to Sy
  • 无需 GUI 即可运行 Electron

    我看到这个问题已被询问但该问题的上下文不同 因此没有与我的用例相关的答案 因此我提出一个新问题 我有一个基于 Electron 的 Web 服务器 它适用于不习惯命令行的网络开发新手 学生和艺术家 是的 这是一个很大的争论 但我被加州大学洛
  • 为什么我的应用程序无法在 Xcode 8 beta (8S128d) 中运行

    这是一个会影响许多应用程序的问题 可以在 Xcode 8 beta 8S128d 中找到 这是第一个 Beta 版 尽管它没有标记为 beta 1 问题出在 NSUserDefaults 上 它不起作用 这是代码 也许可以将其放入appli
  • Python:(显式)字符串参数会损害性能吗?

    假设某个函数总是获取一些它不使用的参数 def someFunc s do something not using s for example a 1 现在考虑这个电话 someFunc the unused string 它给出一个字符串
  • DbNull.Value 和 DbNull.Value.ToString() 之间的区别

    我想知道哪种用法是正确的 if string IsNullOrEmpty parentID cmd Parameters Add new SqlParameter ParentSesID parentID else cmd Paramete
  • 将用于生成电子邮件的 PHP 脚本转换为使用表单中的变量行

    我正在使用 PHP 脚本根据表单中的信息生成电子邮件 该表单的行数可变 我已将表单中每行的输入名称转换为数组 方法是添加 名称后 以便所有行中的数据都可用于生成电子邮件 但是 我不知道该怎么做是如何构建 PHP 以便它可以生成一封电子邮件
  • WinForms 文本框中的按钮

    WinForms 文本框是否具有任何可以在框末尾嵌入按钮的属性 就像 Chrome 地址框上的收藏夹按钮一样 我还在某些 Excel 表单中看到类似以下内容 EDIT 我按照 Hans Passant 的回答添加了一个点击事件处理程序 它似
  • 多个处理程序附加到一个事件:如何仅分离一个?

    在我正在处理的这个模块中 我有一个监听窗口中 调整大小 事件的监听器 每次运行模块时 我都需要检查是否已经有一个侦听器注册到该事件并将其分离 以避免出现不需要的行为 内存泄漏等 到目前为止一切顺利 但是 在我们正在开发的这个应用程序中 有可
  • Rails 多列上的唯一索引失败(sqlite3)

    我使用 Rails 设置了一个 HATBM 模型 其中包含一个用户表 一个组表和一个用于连接的 groups users 所有这些都使用scaffold 命令 现在我想添加一个迁移 以在表 groups users 的 group id 和
  • 为什么IDIV为-1会导致浮点异常?

    据我了解 idiv ebx将分裂edx eax 按顺序连接成 64 位值 与 32 位ebx 然而 当我尝试划分时0x00000000 0xfffffffb 0 和 5 与0xffffffff 1 我得到一个浮点异常 有人可以解释为什么吗
  • 将 PHP/MySQL 数据拆分为 3 列

    我需要使用从 MySQL 返回的数据在 PHP 中创建 3 个 HTML 列 我希望数据在所有 3 列之间均匀分配 我将如何做到这一点 你可以尝试做这样的事情 result mysql query SELECT value FROM tab
  • 查找行 NA 的数据框中的唯一性?

    我有一个如下所示的数据框 我想找到唯一的行 唯一性 但在这个数据中我有 NA 我喜欢如果一行中具有 NA 值的所有值与其他行相同 如行 1 2 5 我想忽略它 但如果不相同 如行 2 4 我喜欢保留它作为唯一行 例如 在第 1 2 和 6
  • 使用 JQuery 逐个字母淡入淡出

    我试图获取 all msg 的文本 并使用 hide 方法隐藏它 然后一次淡入一个字母 有一点延迟 这是我的代码 var all msg welcome msg function animate i all msg hide all msg
  • (Xcode 6 beta / Swift)performSegueWithIdentifier 在 segue 之前有延迟

    我刚刚第一次使用 Swift 和 Xcode 6 beta 学习 Ios 编程 我正在制作一个简单的测试应用程序 它应该调用 API 然后以编程方式转到不同的视图以显示检索到的信息 问题是segue 在我的委托方法中didReceiveAP
  • 当我“像 shell 脚本一样”运行 setuptools .egg 时,实际发生了什么?

    来自阅读本文档 我已经建立了一个关于命令内容的心理模型sh setuptools 0 6c11 py2 7 egg实际上确实如此 但它非常不完整 我仍然对某些方面感到困惑 我的思维模型是这样的 当发出这个命令时 egg 我认为它是一种巧妙处