【问题标题】:is it possible to load python module from unicode path on windows?是否可以从 Windows 上的 unicode 路径加载 python 模块?
【发布时间】:2013-08-09 13:14:20
【问题描述】:

我试图了解是否根本不可能从 unicode 路径加载 python 模块,或者我是否缺少一些技巧。 这个错误报告似乎暗示这是不可能的: http://bugs.python.org/issue11619

目标: 假设 C:\Users\pkarasev\д 包含 Foo.py ,那么我想这样做:

import sys
sys.path.append(str('c:/Users/pkarasev/\xd0\xb3').decode('utf-8')  )
from Foo import *

虽然 u'c:/Users/pkarasev/\0433' 已添加到我的 sys.path 并且 0433 是 ä 的正确编码,但失败并显示“找不到模块...”。

请注意 str(...).decode(...) 方法适用于 os.open 之类的东西,但由于某些原因不适用于加载模块。编码有不同的格式吗?这个动作是不可能的吗?我是否需要使用一些不同语法的 python 3.x 而不是 2.7.3?

编辑:如果有人知道这样做的技巧(在 Windows 上),则现金奖励是有资格的

【问题讨论】:

  • python -c "import locale; print(locale.getpreferredencoding())" 对您的 Windows 编码有何看法?
  • 我得到 cp1252。据我所知,导入模块的唯一方法是首先执行 os.chdir( unicode('c:/Users/pkarasev/\xd0\xb3') ),然后导入 Foo。
  • 好吧,我想答案是不可能的; chdir() 解决方法是可以容忍的。

标签: python windows unicode utf-8


【解决方案1】:

是的,它要么是 python 中不支持 windows 的 bug,要么是 windows 中不健全且使用 utf-8 编码的 bug。在 python27.dll 中,您可以介入并查看伪造的模块路径...

【讨论】:

    猜你喜欢
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多