【问题标题】:How can I replace a Python 2.65 UCS-2 build with one built using UCS-4 without losing everything in my site-packages?如何在不丢失站点包中的所有内容的情况下将 Python 2.65 UCS-2 构建替换为使用 UCS-4 构建的构建?
【发布时间】:2011-03-21 22:59:38
【问题描述】:

我下载了 Python 2.6.5 源代码,为 OS 10.6.4 64 位构建了它,并安装了许多依赖项。我打开了我们团队最近一直在做的一个大项目,运行了单元测试,其中一个测试失败了,因为我安装了使用 UCS-2 构建的 Python(我不知道这是 OS X 的默认设置!)

简而言之: 在构建 Python 时,我没有提供标志 --enable-unicode=ucs4。 (我发现这是必要的:http://copia.posterous.com/confusion-over-python-storage-form-for-unicod

现在我想在不丢失我放入站点包中的所有内容的情况下更正此问题。

这可能吗?如果有,怎么做?

谢谢! 米肖

【问题讨论】:

  • 仅供阅读此问题的任何人参考:您很可能需要重建 numpy:(感谢 Alex!)错误:dlopen(/usr/local/lib/python2.6/site-packages/ numpy/core/multiarray.so, 2): Symbol not found: _PyUnicodeUCS2_FromUnicode 引用自:/usr/local/lib/python2.6/site-packages/numpy/core/multiarray.so 预期在:动态查找

标签: python macos unicode python-2.6


【解决方案1】:

您可以保存和恢复/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages(例如作为.tar.bz2),但是如果他们的任何入口点处理Python Unicode 对象,恢复的.sos 将无法正常工作——所以,那些 包(包含任何此类.so 文件)一旦你的新 Python 版本运行,你就必须重新构建/重新安装!希望这与您放入站点包(手指交叉)中的“所有内容”相去甚远。

【讨论】:

  • 今晚我感觉很勇敢。我想我会试试你的建议;但是,在我这样做之前:鉴于我在我的站点包中依赖 SciPy、Numpy、libsvm、bsddb3、MySQL_python-1.2.3 和 pyodbc,您是否预见到任何并发症? (另外,我已将我的 PATH 设置为使用我安装到 /usr/local/lib 中的 Python)再次感谢!
  • @mkelley,这取决于 - 您是否愿意将 Unicode 对象发送到这些包中的任何一个,或从它们那里接收?如果是这样,那么它们将不得不被重建——但如果你只发送和接收字节字符串(或非字符串数据),那么我不会期望这样。
  • 谢谢。我确实计划向他们发送 Unicode 对象。我需要了解更多关于如何以及为何涉及 .so 文件的信息。现在,我愿意冒着重新安装上述依赖项的风险(我确保首先记录“如何”构建和安装它们!)谢谢!
  • @mkelley,不客气——关键是,如果您在 UCS-4 中向/从使用 UCS-2 构建的扩展 (.so) 发送或接收 unicode,您将在至少传递或获取错误的数据(并且可能有崩溃的风险,尽管我不确定后一点)。
猜你喜欢
  • 2016-12-20
  • 2017-10-06
  • 2022-06-13
  • 2010-11-29
  • 2015-01-04
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
  • 2018-08-30
相关资源
最近更新 更多